Meine beiden Kinder spielen gerne mit folgendem Spielzeug:
Die farbigen Bereiche mit den Formen im Inneren können berührt werden und die Schildkröte beleuchtet dann den Bereich und spielt einen Ton ab oder sagt den Namen der Farbe oder der Form im Inneren. Die mittlere Taste ändert den Modus. Es gibt einen Modus, in dem die Bereiche beim Berühren mit einer Drehung unterschiedliche Noten spielen: Berührt das Kind drei aufeinanderfolgende Bereiche im Uhrzeigersinn, wird eine spezielle Melodie 1 gespielt. Wenn die drei aufeinanderfolgenden berührten Bereiche gegen den Uhrzeigersinn platziert werden, wird eine spezielle Melodie 2 abgespielt.
Die Herausforderung
Lassen Sie uns die interne Logik des Spielzeugs simulieren. Bei einer Zeichenfolge mit drei Drücken des Kindes werden zwei eindeutige, kohärente Werte zurückgegeben, wenn die drei Drücken aufeinanderfolgende Bereiche betreffen (im oder gegen den Uhrzeigersinn), und ein dritter eindeutiger Wert, wenn dies nicht der Fall ist.
Einzelheiten
- Die Eingabebereiche werden jeweils mit einem Buchstaben benannt, der ihre Farbe haben kann:
ROYGB
für Rot, Orange, Gelb, Grün und Blau; oder ihre Form:HSRTC
für Herz, Quadrat, Stern (R
), Dreieck und Kreis. Die Groß- und Kleinschreibung spielt keine Rolle. Sie können zwischen Groß- und Kleinschreibung wählen. - Das Programm erhält eine Zeichenfolge (oder ein Zeichen-Array oder etwas Äquivalentes) mit drei Drücken. Beispiele (unter Verwendung der Farben):
RBO
,GYO
,BBR
,YRG
,YGB
,ORB
... - Das Programm gibt drei unterschiedliche, zusammenhängende Werte aus, um die drei möglichen Ergebnisse darzustellen: einen ersten Wert, wenn die Kombination keine spezielle Melodie auslöst, einen zweiten Wert, wenn die Kombination die spezielle Melodie im Uhrzeigersinn auslöst, und einen dritten Wert, wenn die Kombination die auslöst gegen den uhrzeigersinn spezielle melodie. Beispiel:
0
Für keine spezielle Kombination,1
für die durch eine Kombination im Uhrzeigersinn-1
ausgelöste Melodie und für die durch eine Kombination gegen den Uhrzeigersinn ausgelöste Melodie. - Sie müssen sich nicht um falsche Eingaben kümmern.
Testfälle
Input Output // Input based on colors
--------------
RBO 0 // No special combination
GYO -1 // Counterclockwise melody triggered
BBR 0 // No special combination
YRG 0 // No special combination
YGB 1 // Clockwise melody triggered
ORB -1 // Counterclockwise melody triggered
OOO 0 // No special combination
BRO 1 // Clockwise melody triggered
Das ist Code-Golf , also kann der kürzeste Code für jede Sprache gewinnen!
quelle
[0,0]
,[1,0]
,[0,1]
als Ausgang erlaubt? Ich sehe die Mathematica-Antwort, die das tut, und sie würde 3 Bytes in der 05AB1E-Antwort einsparen.Antworten:
Java 8,
483933 Bytes-6 Bytes dank @RickHitchcock , also stelle sicher , dass du ihn auch positiv bewertest !
Nimmt Großbuchstaben als Eingabezeichenfolge. Ausgänge
-1
für keine,7
für im Uhrzeigersinn und15
für gegen den Uhrzeigersinn.Probieren Sie es online aus.
Erläuterung:
Alte 39 Bytes Antwort:
Nimmt Großbuchstaben als Eingabezeichenfolge. Ausgänge
9362
für keine,0
für im Uhrzeigersinn und1
für gegen den Uhrzeigersinn.Probieren Sie es online aus.
Erläuterung:
quelle
10922
(Ganzzahlige Division durch/6
) oder8191
(Ganzzahlige Division durch/8
) sein, aber ich wähle,/7
weil es der Index des Leerzeichens in der Zeichenfolge ist. :)JavaScript (ES6), 41 Byte
Nimmt Farbinitialen als Eingabe. Gibt
2
für keine,true
im Uhrzeigersinn oderfalse
gegen den Uhrzeigersinn zurück.Probieren Sie es online!
quelle
s=>('ROYGBRO_ORBGYOR'.search(s)+8)/8|0
Python 2 , 36 Bytes
-1
- Keine0
- Im Uhrzeigersinn1
- Gegen den UhrzeigersinnProbieren Sie es online!
quelle
Excel, 29 Bytes
Großbuchstaben als Eingabe.
Gibt
#VALUE!
für kein Muster imTRUE
Uhrzeigersinn undFALSE
gegen den Uhrzeigersinn zurück.Kann zur Behandlung von Ausnahmefällen in
IFERROR( ,0)
for+11 bytes
einbinden und stattdessen '0' für Fälle ohne Muster zurückgeben.quelle
05AB1E ,
1511 Bytes4 Bytes dank Kevin Cruijssen und Magic Octopus Urn gespeichert .
Verwendet Formen.
Ausgang
[0, 0]
für keine ,[1, 0]
für den Uhrzeigersinn und[0, 1]
für gegen den UhrzeigersinnProbieren Sie es online! oder als Testsuite
Erläuterung
quelle
.•1´₃éC•Â‚εXå}¥
was[0]
,[1]
oder[-1]
, so +1 von mir. Btw, ich glaube (nicht sicher) Sie drei Bytes , die durch die letzten drei Entfernen Ausgeben speichern kann[0, 0]
,[1, 0]
und[0, 1]
wie unterschiedliche Werte. Ich sehe, dass die Mathematica-Antwort dasselbe tut. Bittet OP um Bestätigung.‚.•ÌöJη•så
beträgt 11 Bytes, wenn dies[1,0], [0,1] and [0,0]
als eindeutig angesehen wird (es sei denn, ich vermisse hier etwas Offensichtliches undƶO
füge am Ende dieses 11-Bytes immer noch 13 für dieselbe 0, 1, 2-Antwort hinzu, die Sie jetzt haben). Testfälle . Testfälle 2 . Die Umkehrung der Reihenfolge macht die Schleife überflüssig.JavaScript (ES6), 32 Byte
Gibt -1 zurück, wenn keine Kombination vorliegt, 15, wenn gegen den Uhrzeigersinn, 7, wenn im Uhrzeigersinn.
Code-Snippet anzeigen
quelle
Wolfram Language (Mathematica) ,
4236 BytesProbieren Sie es online!
Zählt, wie oft die Eingabe in
"ROYGBRO"
und erscheint"ORBGYOR"
. Gibt{1,0}
für den Uhrzeigersinn,{0,1}
für den Gegenuhrzeigersinn und{0,0}
für keine spezielle Kombination zurück.Auf Kosten von nur einem weiteren Byte können wir Ausgaben von
0
für nichts,1
für im Uhrzeigersinn und2
für gegen den Uhrzeigersinn mit erhalten"ROYGBRO.ORBGYORBGYOR"~StringCount~#&
.quelle
x86-Maschinencode,
3936 BytesVersammlung:
Probieren Sie es online!
Die Ausgabe ist
23
für keine,7
für im Uhrzeigersinn und15
gegen den Uhrzeigersinn. Basierend auf der Antwort von @RickHitchcock.3 Byte mit einer SSE-Zeichenfolgenvergleichsanweisung anstelle von libc gespeichert.
quelle
strstr
immer eine 32-Bit-Adresse (4 Byte) ist. Der Maschinencode in meinem Beitrag ist nicht verknüpft.Perl 5
-p
, 30 BytesProbieren Sie es online!
quelle
APL (Dyalog),
2218 Bytes-4 Bytes dank @ngn
Nimmt eine Reihe von Farbinitialen. Gibt 0 für kein spezielles Muster, -1 für gegen den Uhrzeigersinn und 1 für im Uhrzeigersinn aus.
Probieren Sie es online!
quelle
Python 2 ,
4543 BytesProbieren Sie es online!
Mit Ideen von und ernstem Dank an @DeadPossum
-2 mit Dank an @JoKing. Jetzt gibt -1 = gegen den Uhrzeigersinn, 0 = keine, 1 = im Uhrzeigersinn.
Meine ursprüngliche Anstrengung ist unten aus historischen Gründen.
Python 2 ,
5251 BytesProbieren Sie es online!
0 = keine, 1 = gegen den Uhrzeigersinn, 2 = im Uhrzeigersinn
quelle
Python 2 ,
3536 Bytes+1 - Aus irgendeinem Grund dachte ich, dass alle Schaltflächen> _ <sind
Entwickelt unabhängig von dem, was ich gerade von Dead Possum gesehen habe (und jetzt hochgestuft habe)
Probieren Sie es online!
quelle
Stax ,
1413 BytesFühren Sie es aus und debuggen Sie es
Die Ausgabe ist
quelle
Pip , 19 Bytes
Ausgänge
10
für im Uhrzeigersinn,01
für gegen den Uhrzeigersinn,00
für keine.Probieren Sie es online!Erläuterung
quelle
J , 21 Bytes
Probieren Sie es online!
Wie es funktioniert
Maximale Wiederverwendung von Funktionen.
quelle
Gelee , 12 Bytes
Probieren Sie es online!
-4 Dank an Jonathan Allan .
Im Uhrzeigersinn:
[1, 0]
Gegen den Uhrzeigersinn:
[0, 1]
Andere:
[0, 0]
quelle
R , 38 Bytes
Probieren Sie es online!
Kehrt zurück :
integer(0)
2
1
quelle
Kohle , 18 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
Common Lisp , 68 Bytes
Probieren Sie es online!
quelle
Sauber , 63 Bytes
Probieren Sie es online!
[True, True]
für keine besonderen Geräusche,[True, False]
für gegen den Uhrzeigersinn,[False, True]
für im Uhrzeigersinn.quelle
Japt,
1714 BytesNimmt die Farben als Eingabe in Kleinbuchstaben. Rückgabe
0
im Uhrzeigersinn,1
gegen den Uhrzeigersinn oder-1
wenn keine Kombination vorhanden ist.Versuch es
Expanation
quelle
Ruby ,
5336 BytesProbieren Sie es online!
Eingabe: eine dreistellige Ganzzahl, wobei die Ziffern Farben darstellen:
Ausgang: 0 für Rechtslauf, 1 für Linkslauf,
nil
sonst.quelle
C (gcc) , 55 Bytes
Gibt 0 für keine, -1 für CCW und 1 für CW zurück.
Probieren Sie es online!
quelle