Morgen ist das Mittherbstfest, und im Geiste dieses Feiertags werde ich ein Glücksspiel vorstellen, das wir (Leute aus Xiamen ) während des Feiertags spielen!
Regeln
Das Spiel wird mit sechs 6-seitigen Würfeln gespielt. Unterschiedliche Zahlenkombinationen haben unterschiedliche Ränge, wobei der Schwerpunkt auf Vieren und Einsen liegt. Ihre Aufgabe ist es, ein Programm / eine Funktion zu schreiben, die die Hand mit einem Würfelwurf von 6 würfelt. Hier sind die Ränge (ich habe die Regeln ein wenig geändert / vereinfacht):
Ich denke, nur Chinesen können diese Herausforderung bewältigen! Okay, gut, hier sind einige englische Erklärungen.
- 0: 4 vier und 2 eins.
- 1: 6 vier.
- 2: 6.
- 3: 6 jeglicher Art außer vier und eins.
- 4: 5 vier.
- 5: 5 jeglicher Art außer vier.
- 6: 4 vier.
- 7: Gerade. (1-6)
- 8: 3 vier.
- 9: 4 jeglicher Art außer 4.
- 10: 2 vier.
- 11: 1 vier.
- 12: Nichts.
Eingang
6 Zahlen, ein Array von 6 Zahlen oder eine Folge von 6 Zahlen, die die Werte der 6 Würfelwürfe von 1-6 darstellen
Ausgabe
Ihr Programm / Ihre Funktion kann alles zurückgeben / ausgeben, um den Rang anzuzeigen, solange jeder Rang durch eine Ausgabe angezeigt wird und umgekehrt. Ex. Verwenden Sie die Nummern 0-12, 1-13 usw.
Beispiele (Verwenden von 0-12 als Ausgänge)
[1,1,1,1,1,1]->2
[1,4,4,4,1,4]->0
[3,6,5,1,4,2]->7
[1,2,3,5,6,6]->12
[3,6,3,3,3,3]->5
[4,5,5,5,5,5]->5
Dies ist Code-Golf, also gewinnt die kürzeste Byte-Anzahl!
[1,2,3,5,6,6]->13
?10
nicht übersprungen.Antworten:
Holzkohle , 55 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Überspringt nicht 10. Erläuterung:
Berechnen Sie die höchste Frequenz einer Ziffer.
Wenn es eine 6 von einer Art gibt, subtrahieren Sie die Position der Ziffer in der Zeichenfolge
14
von 2. Dies ergibt 1 für 6 4s, 2 für 6 1s und 3 für 6 von allem anderen.Wenn es eine 5 von einer Art gibt, ist das Ergebnis 5, es sei denn, es gibt 5 4s, in welchem Fall 1 subtrahiert wird.
Wenn es eine 4 von einer Art gibt, dann wenn es 4 4s gibt, dann ist das Ergebnis 6, es sei denn, es gibt 2 1s. In diesem Fall ist das Ergebnis 0, andernfalls ist das Ergebnis 9.
Wenn alle Ziffern unterschiedlich sind, ist das Ergebnis 7.
Andernfalls ist das Ergebnis 12 - (4 >> (3 - # von 4s)).
quelle
JavaScript (ES6), 88 Byte
Probieren Sie es online aus! oder Testen Sie alle möglichen Rollen!
Gibt eine Ganzzahl gemäß der folgenden Zuordnung aus:
Wie?
Methode
Die Ausgabe wird berechnet, indem ein bitweises ODER zwischen:
Ausnahmen:
Tabelle
Gültige Kombinationen von und sind in der folgenden Tabelle fett und blau hervorgehoben.F. M.
Alle anderen Kombinationen (in grau) können unmöglich vorkommen. Wenn wir zum Beispiel drei 4er haben, müssen wir . Aber weil es in einem solchen Wurf nur noch 3 andere Würfel gibt, haben wir auch . Es gibt also nur einen möglichen Wert von für .M≥3 M≤3 M F=3
Beispiel
Wenn wir eine Straße haben, erscheint jeder Würfel genau einmal. Wir haben also und . Bei Verwendung der in der obigen Tabelle beschriebenen Bitmasken führt dies zu:M=1 F=1
Es gibt weitere in der Tabelle, aber es ist ungültig. Daher wird eine Gerade durch eindeutig identifiziert .7 7
Kommentiert
quelle
R , 100 Bytes
Codieren Sie die Partitur als eine Reihe indizierter Bedingungen. Einfacher als mein erster Stringy-Regex-Ansatz.
Fehler behoben und jetzt alle Würfe ordnen.
Probieren Sie es online aus!
quelle
JavaScript (Node.js) , 169 Byte
Probieren Sie es online aus!
Kehrt zurück
1..13
quelle
Python 2 ,
148119 Bytes-27 Bytes dank ovs (1. Verwendung des
.count
Zulassens von amap
; 2. Entfernen von redundanten0
Slices; 3. Verwendung von ain
anstelle von amax
; 4. verkürzt(F==4)*O==2
aufF==4>O==2
[seit dem Golfen aufF>3>O>1
])Probieren Sie es online aus!
quelle
d
nur einer benötigt wird, ist dieser als vollständiges Programm kürzer .Pyth, 60 Bytes
Karten zum umgekehrten Rang, 0-12. Versuchen Sie es online hier oder überprüfen alle Testfälle auf einmal hier .
Die vollständige Zuordnung lautet wie folgt:
Dies funktioniert, indem die Würfelwerte Frequenzen zugeordnet werden, dann der Wert mehrerer Regeln berechnet und das Maximum des Satzes genommen wird.
quelle
Retina ,
137126 Bytes-11 Bytes dank @Neil .
Die Ausgabe ist 0-indiziert (
0..12
).Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Ersetzen Sie alle 4 durch ein 'A':
Sortieren Sie alle Eingangsziffern (die A-Zeichen befinden sich hinten):
Alle zwei Zeilen ersetzen die Eingabe durch die erwartete Ausgabe:
quelle
4
etwas außerhalb des Bereichs ersetzen1-6
, damit es automatisch an einem Ende sortiert wird (nicht sicher, ob es einen Unterschied macht, nach welchem Ende Sie sortieren).05AB1E ,
5755 BytesPort of @Neils Charcoal-Antwort , da mein anfänglicher Ansatz bereits bei 60 Bytes lag und ich noch nicht fertig war. Meine aktuelle Antwort kann aber wahrscheinlich noch mehr gespielt werden.
Eingabe als Ziffernliste.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
Ruby , 100 Bytes
Probieren Sie es online aus!
Wie es funktioniert:
Zählen Sie das Auftreten jeder Zahl im Array, stellen Sie die Zahl 1s voran und fügen Sie die Zahl 4s hinzu.
Versuchen Sie danach, mit verschiedenen Regex-Mustern übereinzustimmen.
quelle