Hintergrund
Brag ist ein Kartenspiel, dessen Konzept dem von Poker ähnelt, das jedoch einfacher ist. Eine Hand in Prahlerei besteht aus drei Karten und wird vom höchsten zum niedrigsten wie folgt eingestuft:
Dreier - alle drei Karten haben den gleichen Rang. Benannt als "drei Könige" usw.
Running Flush aka Straight Flush. Alle drei Karten der gleichen Farbe und aufeinanderfolgender Ränge. Die Hand wird durch die drei Karten in aufsteigender Reihenfolge benannt, gefolgt von den Worten "auf dem Sprung", um sich von einem einfachen Lauf / Straight zu unterscheiden, z. B. "Ten-Jack-Queen auf dem Sprung". Beachten Sie, dass ein Ass entweder hoch oder niedrig ist, aber nicht beides - "König-Ass-Zwei" ist kein Lauf.
Laufen Sie aka gerade. Wie oben, jedoch ohne passende Anzüge. Einfach benannt als zB "Ten-Jack-Queen".
Flush - alle drei Karten haben dieselbe Farbe, benannt nach dem höchsten Rang, z. B. "Ace Flush".
Paar - zwei Karten des gleichen Ranges zusammen mit einem Drittel eines anderen Versionsrangs. Benannt als "Dreierpaar" usw.
Jede andere Kombination, benannt nach dem höchsten Rang, zB "Ass hoch".
Herausforderung
Geben Sie bei drei Spielkarten den Namen der Prahlerei aus, die sie ausgeben.
Die Karten werden entweder als drei 2-stellige Zeichenfolgen eingegeben oder als einzelne 6-stellige Zeichenfolge verkettet (je nachdem, was Ihre Implementierung bevorzugt), wobei der erste jedes Paares der Rang ist (2 ... 9, T, J, Q, K, A) und die zweite bezeichnet die Farbe (H, C, D, S).
Es gelten die Standardregeln für das Golfen - schreiben Sie ein Programm oder eine Funktion, die diese Eingabe akzeptiert und den Namen der Hand wie oben beschrieben ausgibt.
Sie können davon ausgehen, dass die Eingabe gültig ist (Ränge und Farben im oben genannten Bereich, keine wiederholte Karte) und in jedem Fall, den Sie bevorzugen, jedoch nicht in einer bestimmten Reihenfolge.
Die Ausgabe muss entweder in Großbuchstaben, in Kleinbuchstaben oder in einer sinnvollen Groß- und Kleinschreibung erfolgen, z. B. in Groß- oder Kleinschreibung. Numerische Ränge sollten z. B. "Zehner" und nicht Zehner geschrieben werden.
Beispiel Ein- und Ausgänge:
2H3C2D => "pair of twos"
TD8C9C => "eight-nine-ten"
4SKS9S => "king flush"
4D4H4S => "three fours"
5H3H2C => "five high"
2D3DAD => "ace-two-three on the bounce"
6D6C6H => "three sixes"
Dies ist mein erster Versuch einer Herausforderung auf dieser Seite. Bitte schlagen Sie Verbesserungen vor, aber seien Sie vorsichtig :)
quelle
"6D6C6S"
als Testfall hinzu, da sechs ein ungerader Plural istAntworten:
Ruby,
384, 320Akzeptiert ein Array von Zeichenfolgen mit zwei Zeichen.
Übersetzt die Pip-Werte in Hex-Werte und identifiziert Hände anhand der Anzahl der unterschiedlichen Pip-Werte.
Kommentiert:
quelle
Python 2 ,
788, 715, 559, 556, 554, 546, 568,522 Bytes* übergibt jetzt die 'Sechser' * danke an Ben Frankel für die Einsparung von 46 Bytes!
Probieren Sie es online aus!
Danke für eine coole erste Herausforderung!
quelle
D.get(a, b)
bedeutet, auf den Wert im Diktat D bei Schlüssel a zuzugreifen, mit dem Standardwert b, wenn der Schlüssel nicht gefunden wird. Es ist dasselbe wie SchreibenD[a] if a in D else b
, was dasselbe ist wie SchreibenD[a] if a in D.keys() else b
.PHP,
413405398409408406398 BytesLeider unterstützt PHP keine verschachtelten Array-Verweise innerhalb von Zeichenfolgen.
das hätte weitere
65 Bytes gespart .Laufen Sie mit
echo <hand> | php -nR '<code>
oder testen Sie es online .Nervenzusammenbruch
Benötigt PHP> = 5.6 (für
e[...]
)quelle
Python 2 - 583 Bytes
Ich bin zu neu, um Beiträge kommentieren zu können, also poste ich einfach meine Version von Python Solusion.
Problem mit 'es' für Paar und drei von Sechsern behoben. Danke an Nicht diesen Charles
Ein bisschen lesbarer mit einigen Kommentaren
quelle
j=0; if [z]*3==v:r="three %ss"%i(z)
zuif [z]*3==v:r="three %ss"%d[z][0]
Aber es spart nur 1 Byte