Zainspirowany tym wyzwaniem i związany z tym .
tło
Badugi [bæduːɡiː] to wariant pokera z niską piłką.
Turniej Pokerstars World Cup Of Online Poker o wartości 1 000 $ rozpoczyna się w ciągu 3 godzin i muszę wiedzieć, jak dobre są moje ręce!
Gra wykorzystuje standardową talię 52 kart czterech kolorów i trzynastu rang. Kombinezony są nieuporządkowane i powinny być oznakowane cdhs
; szeregi - uporządkowane od najwyższej K
do najniższej A
- są KQJT98765432A
. Jako taki, pełna talia może być przedstawiona w następujący sposób (oddzielone spacją):
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
Każdy gracz otrzymuje cztery karty z talii, są cztery rundy licytacji z trzema rundami losowania pomiędzy nimi (gracz zawsze ma cztery karty, ma możliwość zmiany 0-4 swoich kart na nowe od dealera na każdej z nich z trzech rund rysunkowych).
Jeśli więcej niż jeden gracz jest nadal aktywny po tych wszystkich rundach, następuje showdown, w wyniku którego najsilniejsze ręce wygrywają postawione zakłady.
Gra rozgrywana jest z małą piłką, więc wygrywa najniższa ręka, a jak wspomniano powyżej A
(as) jest niska. Ponadto ranking rozdań różni się od innych form pokera i może być nieco mylący dla początkujących.
Rozgrywana „ręka” jest kombinacją o najniższym rankingu złożoną z najwyższej możliwej liczby kart „off-suit” (wszystkie w różnych kolorach) i „off-rank” (wszystkie w różnych poziomach) (z czterech posiadanych kart ). To znaczy: jeśli ktoś ma cztery karty w obu różnych kolorach i różnych rangach, ma rękę z 4 kartami (zwaną „badugi”); jeśli ktoś nie ma 4-kartowego układu, ale ma jakiś zestaw lub zestawy trzech kart o różnych kolorach i różnych stopniach, ma układ 3-kartowy (wybiera się najlepszy); jeśli ktoś nie ma układu 4-kartowego lub 3-kartowego, prawdopodobnie ma układ 2-kartowy, ale jeśli nie, ma układ 1-kartowy.
Jako taki najlepszy możliwy układ to układ 4-kartowy
4-3-2-A
- najniższe karty poza rangą czterech różnych kolorów , często określane jako „numer 1”. Najsłabszym możliwym układem jest układ z jedną kartąK
i jest to możliwe tylko poprzez dokładne trzymanieKc Kd Kh Ks
.Zauważ, że nie
4c 3h 2c As
jest to „liczba-1”, ponieważ i mają ten sam kolor, ale jest najsilniejszy z 3-kartowych rąk, dobiera z innymi s (jak ) i bije wszystkie inne 3-kartowe ręce, ale przegrywa z wszystkimi 4 kartami (które mogą być tak słabe jak ).4c
2c
3-2-A
3-2-1
Kh 3d 2s Ah
K-Q-J-T
- Innym możliwym układem złożonym z 3 kart, który można wykonać,
4c 3h 2c As
jest4-3-A
jednak słabszy (wyższy), więc nie został wybrany.
- Innym możliwym układem złożonym z 3 kart, który można wykonać,
Podobnie rozgrywane
8d 6h 3s 2h
jest rozdanie z 3 kartami, ponieważ8-3-2
- istnieją dwie kombinacje poza rangą w kolorze 3 i8-3-2
są lepsze (niższe) niż8-6-3
ponieważ trzy (lub „trey”) są niższe niż sześć.
Porównywanie rąk ze sobą odbywa się zgodnie z tą samą logiką - każda karta 4 bije dowolną kartę 3, dowolna karta 3 bije dowolną kartę 2, a każda karta 2 bije dowolną kartę 1, a ręce tej samej liczby używanych kart są w porównaniu z najwyższą rangą do najniższej (na przykład: 8-4-2
rytmy, 8-5-A
ale żaden z nich 8-4-A
, 8-3-2
lub 7-6-5
)
Wyzwanie:
Biorąc pod uwagę dwie nieuporządkowane kolekcje, każda z czterech kart, zidentyfikuj tę, która wygrywa showdown Badugi (zidentyfikuj obie, jeśli jest to remis).
Dane wejściowe mogą być cokolwiek rozsądnego:
- pojedynczy ciąg wszystkich ośmiu kart oznaczonych powyżej (ze spacjami lub bez), przy czym lewe cztery to jedna ręka, a prawa druga (z opcjonalnym separatorem); lub listę znaków w ten sam sposób
- lista dwóch ciągów - po jednym na rękę lub lista list znaków w ten sam sposób
- dwa oddzielne ciągi znaków lub dane wejściowe listy, po jednym na rękę
- karty w rękach też mogą być już rozdzielone (więc lista list jest w porządku)
Uwaga:
- karty nie mogą być ułożone w żadnej kolejności przed wprowadzeniem
- ... a kolory i stopnie są ustalone jako określone tutaj etykiety znaków - Jeśli twój język nie obsługuje takich konstrukcji, po prostu zasugeruj coś rozsądnego i zapytaj, czy jest to dopuszczalna alternatywa ze względu na ograniczenia językowe.
Wyjście powinno być albo
- sformatowane tak samo jak dane wejściowe lub ich wydrukowana reprezentacja; lub
- jednym z trzech odrębnych i spójne wyniki (na przykład:
"left"
,"right"
,"both"
, i1
,2
,3
; itd.)
Naprawdę - dopóki jest jasne, które z dwóch identyfikowanych sygnałów wejściowych powinny być w porządku.
Przypadki testowe
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)
To jest golf-golf, więc najkrótszy kod w bajtach wygrywa w danym języku, a najkrótszy kod ogółem wygrywa. Nie pozwól, aby języki gry w golfa zniechęciły Cię do przesyłania w innych językach i ... baw się dobrze!
źródło
[['3c', '2s', '4d', 'Ah'], ['As', '3h', '2d', '4h']]
rozsądnego?O
do przodu.Odpowiedzi:
Perl 6 , 128 bajtów
Wypróbuj online!
Pobiera listę rąk (także więcej niż dwie), które są listami kart podobnych do strun
Kc
. Zwraca indeksy rąk o najniższym wyniku. W przypadku dwóch rozdań jest tak,(0)
jeśli wygrywa pierwsza ręka,(1)
jeśli wygrywa druga ręka, i(0, 1)
w przypadku remisu.Wyjaśnione:
źródło
<...>
w twojej uprzęży testowej przekłada się na listę ciągów? Czy to jakiś cukier, który mówi, że zawartość powinna być podzielona na spacje?<a b c>
opróczqw(a b c)
Perla 5.JavaScript (ES6),
209202192182181 bajtówZaoszczędź 7 bajtów dzięki @Neil
Pobiera dane wejściowe jako tablicę tablic ciągów. Zwraca,
true
jeśli pierwsza ręka wygrywa,false
jeśli druga ręka wygrywa lub2
w przypadku remisu.Przypadki testowe
Pokaż fragment kodu
W jaki sposób?
źródło
join
?Galaretka , 36 bajtów
Monadyczny link zawierający listę dwóch list znaków
- każda z nich jest oddzieloną spacją reprezentacją ręki (np.
"Ac 2d 4s 3h"
)Zwraca listę dwóch liczb identyfikujących zwycięzcę (-ów)
1
i każdego przegranego z0
- tj.
[1, 0]
= Lewe wygrane;[0, 1]
= prawo wygrywa;[1, 1]
= remisWypróbuj online! lub zobacz zestaw testowy .
W jaki sposób?
źródło
Python 3 ,
207204 bajtówWypróbuj online!
Zaoszczędź 3 bajty dzięki Jonathanowi Frechowi
Zwraca,
1
jeśli pierwsza ręka wygrywa,-1
jeśli druga ręka wygrywa,0
aw przypadku remisu.Funkcja
h
oblicza listę reprezentującą rękę.Lambda porównuje dwa przedstawienia dłoni. Myślę, że można go skrócić, ale chciałem zwrócić tylko trzy wartości i nie znalazłem prostszego sposobu na porównanie.
źródło
L=len
i zastępując wszystkie inne wystąpienialen
zL
.s=set()
zs={0}
iset(x)&s or
zs&set(x)or