Noch eine Jimmy-Herausforderung von seinem ursprünglichen Vater. Sehen Sie sich diese anderen schönen Herausforderungen an .
Wie Sie alle wissen, haben wir in letzter Zeit Herausforderungen im Zusammenhang mit Jimmy auf Plattformen gesehen. Jetzt ist Jimmy ein Akrobat, wie ich bereits erwähnte, und er hat andere Tricks im Ärmel.
Einer dieser Tricks hängt an Seilen. Hier ist ein Beispiel für ein Seil, an dem Jimmy hängen könnte:
||
||
||
||
||
||
Wenn Jimmy an einem Seil hängt, sieht es so aus:
||
||
/o\
||
||
||
Er kann links oder rechts vom Seil hängen.
||
||
||
/o\
||
||
ist auch gültig. Aber er kann nicht nur an einem Körperteil hängen, also ungefähr so:
||
||
||
/o\|
||
||
ist ungültig. Beachten Sie, dass, wenn er an einem Körperteil hängt, die andere Hälfte des Seils sichtbar ist, weil Jimmy es nicht verdeckt.
Jimmy mag es auch nicht, am Boden des Seils zu hängen - es macht ihm Angst - also das:
||
||
||
||
||
/o\
ist ungültig.
Die Herausforderung
Nehmen Sie die Eingabe einer Jimmy-Situation wie oben und geben Sie an, ob Jimmy durch einen wahren oder falschen Wert am Seil festhält oder nicht.
Die Besonderheiten
Schreiben Sie ein Programm, das Eingaben entgegennimmt. Dies kann über eine Funktion oder eine andere geeignete Eingabemethode erfolgen.
- Die Eingabe sollte eine Szene aus einem Jimmy und einem Seil sein, wie oben dargestellt.
Das Programm sollte einen echten oder falschen Wert an die Konsole ausgeben, der davon abhängt, ob Jimmy am Seil hängen kann oder ob er vom Seil fallen würde.
Die Kriterien, nach denen Jimmy am Seil hängen kann:
Zwei seiner Körperteile sind am Seil.
Er ist nicht am Boden des Seils.
Er schwebt nicht in der Luft.
Sie können davon ausgehen, dass das Seil gerade ist, aus
||
Segmenten besteht und länger als ein Zeichen ist.Sie können davon ausgehen, dass ein ganzes Seil und ein einziger Jimmy in Ihrer Szene präsent sind, nicht mehr und nicht weniger.
Sie können davon ausgehen, dass sich am unteren Ende des Seils keine nachlaufenden Newlines befinden.
Sie müssen vor und nach dem Seil beliebig viele Vor- und Nachlaufstrecken abdecken.
Testfälle
||
||
|| TRUTHY
/o\
||
||
||
||
/o\| FALSY
||
||
||
/o\ TRUTHY
||
||
/o\ FALSY
/o\
|| TRUTHY
||
||
/o\ || FALSY
||
||
Wertung
Das ist Code-Golf , sodass die niedrigste Punktzahl in Bytes nach etwa einer Woche erreicht wird.
Bestenliste
Sie können die Bestenliste für diesen Beitrag anzeigen, indem Sie das Widget / Snippet unten erweitern. Damit Ihr Beitrag in die Rangliste aufgenommen wird, benötigen Sie einen Header ( # header text
) mit folgenden Informationen:
Der Name der Sprache (Ende mit Komma
,
oder Bindestrich-
), gefolgt von ...Die Anzahl der Bytes als letzte Zahl in Ihrer Kopfzeile.
Beispielsweise JavaScript (ES6), 72 bytes
ist gültig, aber Fortran, 143 bytes (8-bit)
ungültig, da die Byteanzahl nicht die letzte Zahl in der Kopfzeile ist (Ihre Antwort wird als 8 Byte erkannt - nutzen Sie dies nicht).
<!-- Run the snippet to see the leaderboard. Report any bugs to @xMikee1 on Github. --> <iframe src="https://xmikee1.github.io/ppcg-leaderboard/?id=187759" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
Antworten:
Japt , 5 Bytes
Ich denke , das ist richtig; Ich habe gerade für 16 Stunden gearbeitet und kaum meinen Namen wissen , so würde ich nicht überrascht sein , wenn es nicht!
Versuch es
quelle
Python 2 oder 3 ,
3330 Bytes-3 dank Maxwell
Eine unbenannte Funktion, eine Liste von Linien zu akzeptieren
Probieren Sie es online!
Wie?
Es muss einen von Jimmy verdeckten Seilabschnitt geben, der nicht der unterste ist.
quelle
lambda l:'o'in map(max,l[:-1])
Python 2, 28 Bytes
Probieren Sie es online!
Wie funktioniert es? Es nimmt die Eingabe als eine Liste von Strings und Reißverschluss schließt sich den String. Jimmy bleibt am Seil, wenn ein "|" Dieser Code verbindet alle Zeilen und prüft, ob ein "o" gefolgt von einem "|"
Kommentierter Code:
(Alte Antwort) Python 2 oder 3, 39 Bytes
Eine Funktion, die Eingabe als eine Liste von Zeichenketten führt, wobei jeder String eine andere Zeile.
-11 Bytes dank xnor! -2 Bytes danke an Jonathan Allan!
Probieren Sie es online! (Wenn Sie mehr Testfälle, um zu versuchen, legte sie lediglich ein „“ Nach jedem Satz von Linien in dem Eingabefeld ein.)
Wie funktioniert das? Nun, wenn Jimmy voll am Seil ist, dann hat diese Linie kein "|" Zeichen. Aus diesem Grund können wir jede Zeile überprüfen, und wenn wir eine finden, die kein "|" Charaktere, dann wissen wir, dass Jimmy am Seil bleiben kann. Jimmy kann sich jedoch nicht an der Unterseite des Seils festhalten; Aus diesem Grund nehmen wir die letzte Zeile nicht in unseren Scheck auf. Wenn die letzte Zeile nur ein Teil des Seils ist, spielt es keine Rolle, da wir weiter oben noch eine gültige Zeile finden, aber wenn die letzte Zeile die mit Jimmy ist, wird sie keine Zeile finden ohne "|" überall und wird False zurückgeben.
quelle
lambda x:1-all("|"in i for i in x[:-1])
Jelly ,
9 76 BytesEin monadischer Link, der eine Liste von Zeilen akzeptiert
Probieren Sie es online!
Wie?
Es muss einen von Jimmy verdeckten Seilabschnitt geben, der nicht der unterste ist.
quelle
Note that all other characters are [less than '|']
"?Brainfuck,
7964 BytesProbieren Sie es online!
Gibt das 0x01-Byte für "truthy" und nichts für "falsy" aus.
quelle
Schmutz , 5 Bytes
Probieren Sie es online!
Das richtige Werkzeug für den Job.
quelle
Stax , 6 Bytes
Führen Sie es aus und debuggen Sie es
Transponiert die Eingabe und sucht nach "o |".
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
Die einzigen Zeichen, die in der Eingabe erscheinen können, sind
\o/ |
mit den entsprechenden Codepunkten 92, 111, 47, 32, 124 (es gibt keine Zeilenumbrüche, da wir die Eingabe als Array von Zeilen gewählt haben). Die möglichen Ergebnisse durch Modulieren von zwei dieser Zahlen sind 0, 13, 15, 17, 19, 28, 30, 32, 45, 47, 92, 111. 111 ist die größte davon und auch die einzige, die mit 1 endet Daher gibt der Code nur dann wahrheitsgetreu aus, wenn 111 in der Liste vorhanden ist (in 05AB1E ist nur 1 wahrheitsgetreu). 111 ist 111 (o
)% 124 (|
) und tritt daher nur auf, wenn in der Eingabe eino
über a steht|
.quelle
APL (Dyalog Unicode) , 8 Bytes SBCS
Anonyme implizite Präfixfunktion, die eine Zeichenmatrix als Argument verwendet.
Probieren Sie es online!
⍉
transponieren'o|'⍷
Maske für überallo
folgt sofort|
1∊
Ist einer ein Mitglied davon?quelle
Dyalog APL Extended,
1413119 BytesProbieren Sie es online!
quelle
3∊¯1+/⍤↓<
JavaScript,
3933 BytesVielen Dank an Daniil Tutubalin für das Golfen mit 2 Bytes
Dies passt zu jeder Linie, die nicht die Linie ist, in der sein linker Arm auftaucht und keines der Seile zeigt.
Probieren Sie es online!
quelle
/^ *.o. *\n/
?/// ,
5350 BytesProbieren Sie es online!
Da es keine andere Möglichkeit gibt, Eingaben in /// vorzunehmen, ist diese fest codiert:
Erläuterung:
Die allgemeine Vorgehensweise besteht darin, Jimmy durch eine unäre 1 zu ersetzen und ihn dann aus allen Situationen zu entfernen, in denen er in Gefahr ist. Überlebt er, wird er ausgegeben. Wenn nicht, dann ist nichts. Die
~
im Code sind ein Ersatz für//
, mit dem der Code hier um 3 Bytes gekürzt werden kann. Sie sind in der Erläuterung weggelassen.Probieren Sie es online!
quelle
Ruby 2.5.5, 22 Bytes
Erwartet ein Array von Zeilen. Benötigt mindestens Version 2.5.5, da dies der Fall ist
Array#all?(pattern)
es hinzugefügt wurde.Aufgrund der Einschränkungen, dass die Eingabe immer eine gültige Szene von Jimmy und einem Seil ist, läuft es darauf hinaus, ob in einer der Zeilen vor der letzten Zeile das Seil verdeckt ist.
quelle
Kotlin ,
9384 BytesProbieren Sie es online!
quelle
JavaScript,
3837 BytesProbieren Sie es online!
quelle
Netzhaut , 9 Bytes
Probieren Sie es online!
Jetzt habe ich noch nie in Retina programmiert, aber soweit ich das beurteilen kann, funktioniert es. Es ist ein regulärer Ausdruck, der einen String findet, der (1) den Anfang der Eingabe enthält, (2) kein "|" Zeichen und (3) eine neue Zeile.
Personen, die mit regulären Ausdrücken oder Retina besser vertraut sind, werden aufgefordert, Vorschläge zu unterbreiten. -2 Bytes dank Neil!
quelle
\n
weil eine neue Zeile kein|
und damit sowieso übereinstimmt, und das Finale^
reicht aus, um sicherzustellen, dass Sie tatsächlich eine neue Zeile übereinstimmen. 2) Verwenden Sie eine Pilcrow¶
anstelle von\n
und entfernen Sie das Ende^
(da dies nach einem Zeilenumbruch im mehrzeiligen Modus immer der Fall ist).Perl 5
-p
, 26 BytesProbieren Sie es online!
quelle
Befunge-98 (PyFunge) ,
2624 BytesProbieren Sie es online!
Beendet mit Rückkehrcode 3, wenn
\n
auftritt und die letzte Zeile 3 Zeichen ohne Leerzeichen enthielt, andernfalls wird mit dem Rückkehrcode 0 auf EOF beendet. Dies setzt also voraus, dass die letzte Zeile keine nachgestellte Zeile enthält.Präpariert
quelle
05AB1E (Legacy) , 6 Byte
Hafen von @Shaggy Japt-Antwort .
Eingabe als Liste von Zeilen.
Probieren Sie es online aus.
Erläuterung:
quelle
Ulme 0,19, 68 Bytes
Nimmt die Eingabe als eine Liste von Zeilen. Wenn die letzte Zeile ignoriert wird, wird geprüft, ob es welche mit der Nummer no gibt
'|'
sie leer ist. Dies bedeutet, dass das Seil vollständig von Jimmy bedeckt ist.Überprüfen Sie alle Testfälle hier .
quelle
Power Shell , 26 Byte
Port of Maxwells Antwort für Retina .
Probieren Sie es online!
Erläuterung:
true
wenn:|
false
Andernfalls.quelle
Pyth , 9 Bytes
Testsuite!
quelle
Pyret, 79 Bytes
Erwartet ein Array von Zeilen als Zeichenfolgen. Erstellt eine Kopie, in der
link(0,l)
alle Zeilen um eins nach unten verschoben werden. Durchläuft jede Zeiler
undn
wobei n die Zeile unter r ist. Überprüft, ob sich Jimmys Körper"o"
an einer Position befindet und in der Reihe darunter ein Rohr befindet (dh Jimmy hängt am Seil und ist nicht unten).quelle