Bei dieser einfachen, aber unterhaltsamen Herausforderung mussten Sie feststellen, ob Jimmy von ihrer Plattform fallen würde. Jimmy hat drei Körperteile /
, o
und \
wie diese angeordnet sind
/o\
Plattformen sind mit vertreten -
. Jimmy fällt von der Plattform, wenn sich zwei oder mehr Körperteile nicht direkt über einer Plattform befinden.
Einige Beispiele:
/o\
- -------
Jimmy gleicht aus, da alle Körperteile über a liegen -
.
/o\
------ ---
Jimmy wird ausgeglichen, da zwei Körperteile über -
s liegen.
/o\
-- ---- --
Jimmy gleicht aus, obwohl sie auf zwei Plattformen aufgeteilt sind
/o\
-
Jimmy wird nicht ausbalanciert, da sich zwei Körperteile nicht über einer Plattform befinden.
Ihre Aufgabe ist es, ein Programm zu schreiben, das eine Plattform als einen längeren Container mit nur -
s und s (z. B. einem String) betrachtet und die Anzahl der Jimmys ausgibt, die auf der Plattform so platziert werden können, dass keiner von ihnen herunterfällt und keiner von ihnen herunterfällt Überlappung. Ein Jimmy kann einen seiner Körperteile links vom Anfang der Saite oder rechts vom Ende der Saite haben.
Dies ist Codegolf, daher werden Antworten in Bytes bewertet, wobei weniger Bytes das Ziel sind.
Testfälle
Eingänge
- - -
- -
--
-- --
----
- -- --
------- -
Entsprechende Ausgänge
0
0
1
1
2
2
2
3
---
saßen auch nicht gut bei mir, bis ich an meinem Hafen arbeitete und merkte, dass sie nicht gebraucht wurden. Ich nehme an, ich nenne es einen Tag hier, schnappe mir eine Tüte Dosen und schmeiße mir selbst SMG drauf - habe es schon lange nicht mehr gespielt.Python 2 , 53 Bytes
Probieren Sie es online!
Basierend auf Arnauld's Regex . Sucht gierig nach allen nicht überlappenden Teilzeichenfolgen der Länge 3 mit zwei oder mehr
-
. Ein Trick besteht darin`s`
, die Eingabezeichenfolge in Anführungszeichen zu setzen, damit Jimmys an beiden Enden Platz hatPython 2 , 57 Bytes
Probieren Sie es online!
Erfordert ein kitschiges E / A-Format der Eingabe, die bereits in Anführungszeichen steht. Ausgänge
False
für 0.Eine rekursive Funktion, mit der jeder Jimmy ganz links platziert werden kann, indem entweder Jimmy über die ersten drei Zeichen platziert wird, wenn sie Jimmy halten können, oder das erste Zeichen auf andere Weise gelöscht wird. Ein netter Trick ist, zu überprüfen, ob
s[:3]
zwei oder mehr-
Dateien enthalten'--'in s[:3]*2
, indem zwei Kopien von verkettet werdens[:3]
und nach zwei benachbarten gesucht wird-
.quelle
Perl 5
-p
, 28 bytesUses the same method as @Arnauld's JavaScript.
Try it online!
quelle
Japt, 16 bytes
Based on Arnauld's original JS solution. I tried a few different methods to get the necessary padding either side of the input but all came in at the same length - still searching for a shorter way...
Test it
quelle
Excel, 96 bytes
A1
= platform. Entered as array FormulaCtrl
+Shift
+Enter
quelle
05AB1E, 16 bytes
Can definitely be golfed.. Sometimes it's annoying to see all these regex answers in a challenge when using 05AB1E, which is lacking regex of any kind. ;)
Try it online or verify all test cases.
Explanation:
quelle
Ruby, 39 bytes
Try it online!
quelle
Stax, 13 bytes
Run and debug it
quelle
Java 8, 41 bytes
Try it online.
Port of @Arnauld's JavaScript answer, except that
+0
is+10
to fix test cases like----
. This is necessary because theString#split
builtin in Java will remove trailing empty Strings by default. This can be changed by adding an additional parameter to thesplit
builtin (which is0
by default in thesplit
-builtin with a single String argument). To quote the usage of this additional parameter from the docs:Because of this, usually
.split("...",-1)
is used to retain ALL trailing empty Strings, and I could have used it for this answer as well (Try it online). In this case changing the+0
to+10
saves two bytes over the,-1
, though. :)quelle
Jelly, 12 bytes
Try it online!
Based on @KevinCrujissen’s 05AB1E answer so be sure to upvote him too.
quelle
Charcoal, 25 bytes
Try it online! Link is to verbose version of code. Explanation:
Print the platform without moving the cursor, then move the cursor up and left as that is the first potential Jimmy position.
Look for as many Jimmies as there are platform positions.
Check to see whether there is more than one piece of platform at this position.
If so then note a valid Jimmy position...
... and move three characters to the right so that the Jimmies don't overlap.
Otherwise the next potential Jimmy position is one character to the right.
Clear the platform and output the count of discovered positions.
quelle
PowerShell, 38 bytes
Port of Arnauld's JavaScript answer.
Try it online!
quelle
Elm 0.19, 108 bytes
Based on the regex in Arnauld's JavaScript answer. Verify all test cases here.
Alternative solution without regex, significantly longer at 171 bytes:
Verify all test cases here.
quelle