Wie Sie wahrscheinlich wissen, gibt es mehr schöne Jimmy Herausforderungen vor kurzem Aufspringen. Bei diesen Herausforderungen wurden Sie mit den Akrobatikfähigkeiten unseres geliebten Freundes herausgefordert. Jetzt haben wir eine andere Herausforderung für Sie. Heute werden Sie verschiedene Arten von Jimmys identifizieren!
Erläuterung
Es gibt drei Sorten von Jimmys: Zwerg, Akrobat und Bodybuilder.
This is dwarf Jimmy: o
This is acrobat Jimmy: /o\
This is bodybuilder Jimmy: /-o-\
Diese Jimmys sind alle großartige Freunde und stehen gerne in einer Linie. Ihre Aufgabe ist es, eine Jimmy-Szene wie folgt zu bestimmen:
o /o\ o /-o-\/-o-\ o /o\
Geben Sie jeweils die Anzahl der Zwerge, Akrobaten und Bodybuilder in der Linie aus.
Die Herausforderung
Nehmen Sie die Eingabe in einer angemessenen Form als Jimmy-Szene, wie in einem Beispiel oben gezeigt.
Die Eingabezeichenfolge sollte eine Zeile sein und optional die drei Sorten von Jimmys und optional das Leerzeichen enthalten.
Die Zeichenfolge enthält nicht unbedingt alle Jimmy-Sorten oder Leerzeichen.
Die Zeichenfolge enthält keine Zeichen, die nicht in enthalten sind
o/\ -
.Jede Kombination von Jimmy-Sorten ist möglich. Dies bedeutet, dass der gleiche oder ein anderer Jimmy-Typ nebeneinander sein kann. Sie müssen das berücksichtigen.
Führende und nachfolgende Leerzeichen sind optional und auf keinen Fall erforderlich - Ihr Programm sollte eine Zeichenfolge mit oder ohne führende und / oder nachfolgende Leerzeichen berücksichtigen.
Die Zeichenfolge sollte nur gültige Jimmys und Leerzeichen enthalten. Dies
---///---
ist beispielsweise nicht zulässig, da es sich nicht um eine gültige Jimmy-Sequenz handelt.
Gib drei Zahlen aus: Die Anzahl der Zwerge, Akrobaten und Bodybuilder in der Szene (in der jeweiligen Reihenfolge).
Dies kann eine Ausgabe an die Konsole als durch Leerzeichen getrennte Ganzzahl sein oder ein Rückgabewert einer Funktion als eine Art Container (dh ein Array-Typ).
Die Ausgabe in einem beliebigen Format muss wie im oberen Punkt über dieser Regel angegeben bestellt werden.
Es gelten Standardregeln und Regelungslücken.
Testfälle
/-o-\ /-o-\ o/o\ /-o-\ /-o-\ /-o-\
OUTPUT: 1 1 5
o o /o\ o o o /o\ /o\
OUTPUT: 5 3 0
/-o-\ /-o-\ /-o-\/-o-\ o /o\/o\ /-o-\o /-o-\ /o\/-o-\
OUTPUT: 2 3 7
/-o-\ o /-o-\ o/o\
OUTPUT: 2 1 2
Wenn Sie mehr Testfälle möchten, können Sie mit diesem Tool mehr zufällige Testfälle generieren.
Wertung
Dies ist Code-Golf , also gewinnt die niedrigste Punktzahl in Bytes.
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=188391" 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>
oo /o\ o o
nettoo
.Antworten:
Jelly , (12?) 13 Bytes
Ein monadischer Link, der eine Liste von Zeichen akzeptiert, die eine Liste von ganzen Zahlen ergibt.
[ dwarves, acrobats, and body-builders]
(Speichern Sie dasṚ
Byte, wenn Sie unsere Ausgabe spezifizieren möchten.)Probieren Sie es online!
Wie?
Alle Jimmys zeigen ein
o
; Alle Nicht-Zwerge zeigen ein/
; Alle Bodybuilder zeigen zwei-
. Zählen Sie diese auf, halbieren Sie sie-
und subtrahieren Sie sie, um die Jimmy-Zahlen zu ermitteln:quelle
Python 3.8 (Vorabversion) , 51 Byte
Probieren Sie es online!
quelle
('o')
Anrufs ohne durchgeführtc
?s.count
aufc
und gibt es dann.Python 2 , 50 Bytes
Probieren Sie es online!
-10 Bytes durch Konvertieren des Lambda-Ausdrucks in ein vollständiges Programm dank @xnor
quelle
PowerShell ,
59-55ByteProbieren Sie es online!
Abgerollt:
quelle
J ,
36-25Bytes-11 bytes dank cole!
Probieren Sie es online!
Originelle Lösung
J , 36 Bytes
Probieren Sie es online!
Erläuterung:
Eine Beispiel- J- Sitzung:
quelle
Excel als CSV, 130 Bytes
Fügen Sie die Eingabe zuerst im Leerzeichen ein
,
, speichern Sie sie als .csv und öffnen Sie sie in Excel. Ausgänge Zwerge, Akrobaten und Bodybuilders inB1
,B2
undB3
jeweils.Excel, 244 Bytes
quelle
APL (Dyalog Unicode) , 20 Byte SBCS
Probieren Sie es online!
quelle
Kotlin
131130129121117979688 BytesProbieren Sie es online!
Bearbeiten - Wew, habe es unter 100! Ich bezweifle, dass ich es mehr schrumpfen kann, aber nur die Zeit wird es zeigen ...
Bearbeiten - Sprach zu früh, löschte ein weiteres Byte mithilfe einer Liste anstelle einer Zeichenfolge
Bearbeiten - minus 8 Bytes dank AsoLeo, der die Verwendung einer Erweiterungsfunktion vorschlägt
quelle
fun String.j(b:Int=count{'-'==it}/2,a:Int=count{'/'==it})=listOf(count{'o'==it}-a,a-b,b)
88 Bytes.Retina ,
39-35BytesEdit: -4 Bytes dank @FryAmTheEggMan
Probieren Sie es online!
Erläuterung:
Eine einfache Ersetzungsstufe. Es findet alle Übereinstimmungen der Regex
^((o)|(/o.)|(/-o-.)| )*
(was zu einer Übereinstimmung führen sollte - die gesamte Zeichenfolge) und ersetzt sie durch die Anzahl der Erfassungen der Gruppen 2, 3 und 4. Hier ist die Regex nach:Wir müssen mit beginnen
^
oder das Ende der Eingabe zählt auch als Übereinstimmung. Bezieht sich in der Substitutionssyntax von Retina$n
auf die n-te Erfassungsgruppe, und der Modifikator#
zählt, wie viele Übereinstimmungen damit erzielt wurden.quelle
JavaScript, 55 Byte
Durchsucht die Zeichenfolge mit einem Regex-Mustervergleich
o
.o-
, Odero-\
; erhöht die entsprechende Anzahl in einem Array anhand der Länge jeder Übereinstimmung, um den Index zu bestimmen.Probieren Sie es online!
quelle
Clojure , 78 Bytes
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) , 63 Byte
Probieren Sie es online!
55 Bytes, wenn die sinnlose Bestellanforderung entfällt ...
quelle
Python 3 ,
69666056 Bytes-4 Bytes dank @Maarten Fabré
Probieren Sie es online!
quelle
g=input().count
sofort tunR , 63 Bytes
Verwendet Regex Matching, um die Jimmys zu finden und zu zählen.
Probieren Sie es online!
quelle
K (oK) , 25 Bytes
Probieren Sie es online!
quelle
Perl 5
-p
, 41 BytesProbieren Sie es online!
Zählt, wie oft
o
angezeigt wird, ohne von\
oder verfolgt-
zu werden, um die Zwerge zu finden, und entfernt sie aus der Zeichenfolge. Zählt dann, wie oft/o
angezeigt wird, um die Akrobaten zu finden, und entfernt sie aus der Zeichenfolge. Dann zählt die Anzahl dero
verbleibenden, um die Bodybuilder zu bestimmen. Fügt Leerzeichen zwischen die Zahlen ein und gibt das Ergebnis implizit aus.quelle
1*
undef
) anstelle von ausgegeben0
.Ruby , 50 Bytes
Probieren Sie es online!
quelle
SNOBOL4 (CSNOBOL4) , 135 Byte
Probieren Sie es online!
Entfernt
-o
,/o
undo
aus der Zeichenfolge und inkrementiert den entsprechenden Zähler jedes Mal. Hinterlässt viele Arme und Beine (/-\
,\
und nichts).quelle
Forth (gforth) , 118 Bytes
Probieren Sie es online!
Erläuterung
/
,-
undo
Zeichen-
Zeichen geteilt durch 2/
Zeichen abzüglich der Anzahl der Bodybuildero
Zeichen abzüglich der Anzahl der Acrobat- und BodybuilderCode-Erklärung
quelle
05AB1E , 13 Bytes
Dies können 12 Bytes sein ,
R
wenn die Ausgabereihenfolge von entfernt worden[bodybuilder, acrobat, dwarf]
wäre.Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Kleinere Alternative mit gleichen Bytes:
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
C (GCC) ,
999896 Bytes-1 byte dank ceilingcat
Probieren Sie es online!
quelle