Inspiriert von dieser Herausforderung und verwandt mit dieser .
Hintergrund
Badugi [bæduːɡiː] ist eine Low-Ball Draw-Poker-Variante.
Der Pokerstars World Cup of Online Poker $ 1K Event beginnt innerhalb von 3 Stunden und ich muss wissen, wie gut meine Hände sind!
Das Spiel verwendet ein Standardstapel von 52 Karten mit vier Farben und dreizehn Rängen. Die Anzüge sind ungeordnet und müssen gekennzeichnet sein cdhs
; Die Ränge - vom höchsten K
zum niedrigsten geordnet A
- sind KQJT98765432A
. Als solches kann das gesamte Deck wie folgt dargestellt werden (durch Leerzeichen getrennt):
Kc Kd Kh Ks Qc Qd Qh Qs Jc Jd Jh Js Tc Td Th Ts 9c 9d 9h 9s 8c 8d 8h 8s 7c 7d 7h 7s 6c 6d 6h 6s 5c 5d 5h 5s 4c 4d 4h 4s 3c 3d 3h 3s 2c 2d 2h 2s Ac Ad Ah As
Jeder Spieler erhält vier Karten aus dem Stapel, es gibt vier Wettrunden mit drei dazwischen liegenden Ziehungsrunden (ein Spieler hat immer vier Karten, er hat die Möglichkeit, 0-4 seiner Karten durch neue Karten des Dealers zu ersetzen der drei Ziehungsrunden).
Wenn nach all diesen Runden noch mehr als ein Spieler aktiv ist, gibt es einen Showdown, woraufhin die stärksten Hände die gesetzten Wetten gewinnen.
Das Spiel wird mit niedrigem Ball gespielt, so dass die niedrigste Hand gewinnt und wie oben erwähnt A
(Ass) niedrig ist. Darüber hinaus unterscheidet sich das Handranking von anderen Pokerformen und kann für Anfänger etwas verwirrend sein.
Die gespielte "Hand" ist die Kombination mit dem niedrigsten Rang, die aus der höchsten Anzahl von möglichen "Off-Suit" -Karten (alle unterschiedlichen Farben) und "Off-Rank" -Karten (alle unterschiedlichen Ränge) (aus den vier gehaltenen Karten) besteht ). Das heißt: Wenn man vier Karten mit unterschiedlichen Farben und Rängen besitzt, hat man eine 4-Karten-Hand ("Badugi" genannt). Wenn man keine 4-Karten-Hand hat, aber einen Satz oder Sätze von drei Karten mit unterschiedlichen Farben und Rängen hat, hat man eine 3-Karten-Hand (man wählt das Beste aus). Wenn man weder eine 4-Karten-Hand noch eine 3-Karten-Hand hat, hat man wahrscheinlich eine 2-Karten-Hand, aber wenn nicht, hat man eine 1-Karten-Hand.
Als solche ist die bestmögliche Hand die 4-Karten-Hand
4-3-2-A
- die Karten mit dem niedrigsten Rang von vier verschiedenen Farben , die oft als "Nummer 1" bezeichnet werden. Die schwächste mögliche Hand wäre die 1-Karten-HandK
und ist nur durch genaues Halten möglichKc Kd Kh Ks
.Beachten Sie, dass
4c 3h 2c As
ist nicht eine „Nummer-1“, da die4c
und2c
von der gleichen Farbe sind, aber es ist die stärkste der 3-Karten Hände,3-2-A
zieht er mit anderen3-2-1
s (wieKh 3d 2s Ah
) und übertrifft alle anderen 3-Karten Hände , aber verliert gegen alle 4-Karten-Hände (die so schwach sein können wieK-Q-J-T
).- Die andere mögliche 3-Karten-Hand, aus der man machen könnte,
4c 3h 2c As
ist4-3-A
, aber die ist schwächer (höher), also nicht gewählt.
- Die andere mögliche 3-Karten-Hand, aus der man machen könnte,
In ähnlicher Weise
8d 6h 3s 2h
wird eine 3-Karten-Hand gespielt als8-3-2
- es gibt zwei Off-Sight-Off-Suit-Kombinationen der Größe 3, die8-3-2
besser (niedriger) sind als8-6-3
die drei (oder "trey") niedriger als die sechs.
Das Vergleichen von Händen untereinander folgt der gleichen Logik: Jede 4-Karte schlägt jede 3-Karte, jede 3-Karte schlägt jede 2-Karte und jede 2-Karte schlägt jede 1-Karte, während Hände mit der gleichen Anzahl gebrauchter Karten sind Vergleich von ihrem höchsten Rang nach unten auf die niedrigsten (zum Beispiel: 8-4-2
Beats , 8-5-A
aber nicht alle 8-4-A
, 8-3-2
oder 7-6-5
)
Die Herausforderung:
Identifizieren Sie bei zwei ungeordneten Sammlungen mit jeweils vier Karten diejenige (n), die einen Badugi-Showdown gewinnen (identifizieren Sie beide, wenn es sich um ein Unentschieden handelt).
Die Eingabe kann alles Vernünftige sein:
- eine einzelne Zeichenfolge aller acht oben genannten Karten (mit oder ohne Leerzeichen), wobei die linken vier eine Hand und die rechte die andere sind (mit einem optionalen Trennzeichen); oder eine Liste von Zeichen auf die gleiche Weise
- eine Liste mit zwei Zeichenfolgen - eine pro Hand oder eine Liste mit Zeichenlisten auf dieselbe Weise
- zwei separate Zeichenfolgen oder Listeneingaben, eine pro Hand
- Die Karten in den Händen können auch schon getrennt sein (eine Liste von Listen von Listen ist also in Ordnung).
Beachten Sie jedoch:
- Die Karten dürfen vor der Eingabe nicht in beliebiger Reihenfolge angeordnet werden
- ... und die Farben und Ränge sind als die hier angegebenen Zeichenbezeichnungen festgelegt. - Wenn Ihre Sprache solche Konstrukte nicht unterstützt, schlagen Sie einfach etwas Vernünftiges vor und fragen Sie, ob es angesichts Ihrer sprachlichen Einschränkungen eine akzeptable Alternative ist.
Die Ausgabe sollte entweder sein
- das gleiche Format wie die Eingabe oder eine gedruckte Darstellung davon; oder
- sein , ein von drei unterschiedlichen und gleichbleibenden Ergebnissen (zB:
"left"
,"right"
,"both"
, oder1
,2
,3
, etc.)
Wirklich - solange klar ist, welcher der beiden Eingänge identifiziert wird, sollte es in Ordnung sein.
Testfälle
input -> output
(notes)
----------------------------------------------------------------------------
3c 2s 4d Ah - As 3h 2d 4h -> 3c 2s 4d Ah
(4-card 4-3-2-A beats 3-card 3-2-A)
3c 2s 4d Ah - As 2c 3d 4h -> 3c 2s 4d Ah - As 2c 3d 4h
(4-card 4-3-2-A draws with 4-card 4-3-2-A)
2d Ac 4h 3c - Kh Ad 9s 2c -> Kh Ad 9s 2c
(3-card 4-2-A loses to 4-card K-9-2-A)
Kc Tc Qc Jc - Ac Ad Ah As -> Ac Ad Ah As
(1-card T loses to 1-card A)
9c 9h Qc Qh - Qs Kh Jh Kd -> Qs Kh Jh Kd
(2-card Q-9 loses to 3-card K-Q-J)
2d 5h 7c 5s - 2h 3c 8d 6c -> 2d 5h 7c 5s
(3-card 7-5-2 beats 3-card 8-3-2)
3s 6c 2d Js - 6h Jd 3c 2s -> 6h Jd 3c 2s
(3-card 6-3-2 loses to 4-card J-6-3-2)
Ah 6d 4d Ac - 3h 2c 3s 2s -> 3h 2c 3s 2s
(2-card 4-A loses to 2-card 3-2)
2h 8h 6h 4h - 6d 2d 5d 8d -> 2h 8h 6h 4h - 6d 2d 5d 8d
(1-card 2 = 1-card 2)
Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes pro Sprache und der kürzeste Code insgesamt. Lassen Sie sich nicht von Golfsprachen davon abhalten, in anderen Sprachen einzureichen, und ... haben Sie Spaß!
quelle
[['3c', '2s', '4d', 'Ah'], ['As', '3h', '2d', '4h']]
vernünftig?O
nach vorne hinzufügen .Antworten:
Perl 6 , 128 Bytes
Probieren Sie es online aus!
Nimmt eine Liste von Händen (auch mehr als zwei), die Listen von Karten sind, die wie Strings sind
Kc
. Gibt die Indizes der Hände mit der niedrigsten Punktzahl zurück. Für zwei Hände ist dies,(0)
wenn die erste Hand gewinnt,(1)
wenn die zweite Hand gewinnt, und(0, 1)
für ein Unentschieden.Erklärt:
quelle
<...>
in Ihrem Testgeschirr eine Liste von Zeichenfolgen? Ist es eine Art Zucker, der besagt, dass der Inhalt auf Leerzeichen aufgeteilt werden sollte?<a b c>
zusätzlichqw(a b c)
von Perl 5.JavaScript (ES6),
209202192182181 Bytes7 Bytes dank @Neil gespeichert
Nimmt die Eingabe als Array von Arrays von Strings auf. Gibt zurück,
true
wenn die erste Hand gewinnt,false
wenn die zweite Hand gewinnt oder2
bei einem Unentschieden.Testfälle
Code-Snippet anzeigen
Wie?
quelle
join
?Gelee , 36 Bytes
Ein monadischer Link, der eine Liste von zwei Zeichenlisten enthält
- jede ist eine durch Leerzeichen getrennte Darstellung der Hand (z. B.
"Ac 2d 4s 3h"
),die eine Liste von zwei Zahlen zurückgibt, die den / die Gewinner mit
1
und jeden Verlierer mit0
- dh
[1, 0]
= links gewinnt;[0, 1]
= rechts gewinnt;[1, 1]
= zeichnen.Probieren Sie es online aus! oder sehen Sie sich die Testsuite an .
Wie?
quelle
Python 3 ,
207204 BytesProbieren Sie es online aus!
3 Bytes dank Jonathan Frech gespeichert
Gibt zurück,
1
wenn die erste Hand gewinnt,-1
wenn die zweite Hand gewinnt und0
im Falle eines Unentschieden.Die Funktion
h
berechnet eine Liste, die die Hand darstellt.Das Lambda vergleicht zwei Darstellungen von Hand. Ich denke, es könnte verkürzt werden, aber ich wollte nur drei Werte zurückgeben und fand keinen einfacheren Weg, um Vergleiche anzustellen.
quelle
L=len
indem Sie alle anderen Vorkommen vonlen
mit definieren und ersetzenL
.s=set()
mits={0}
undset(x)&s or
mits&set(x)or