Powiązane: Nazwij rękę pokera
Poker jest kartą pokera zawierającą pięć kart o kolejności rangowej, wszystkie w tym samym kolorze. W ramach pokera, as może zająć rangę powyżej króla lub poniżej dwóch. As może mieć wysoką rangę (np. A ♥ K ♥ Q ♥ J ♥ 10 ♥ to pokera z pokerem o wysokości asa) lub niską (np. 5 ♦ 4 ♦ 3 ♦ 2 ♦ A ♦ to pięcio-wysoki strit), ale nie może uszeregować zarówno wysokiego, jak i niskiego poziomu w tej samej ręce (np. Q ♣ K ♣ A ♣ 2 ♣ 3 fl to kolor asa, a nie pokera).
Wyzwanie
Podane N
karty (w dowolnym rozsądnym formacie) generują prawdziwą wartość, jeśli w ręce pokerowej znajduje się pokera.
Wkład
N
liczba kart. (W dowolnym rozsądnym formacie)
Istnieją cztery kolory; kier, pik, karo i trefl (H, S, D, C)
.
Każdy kolor ma jedną kartę dla liczb od 2 do 10, plus 4 karty „obrazkowe”, as, walet, królowa i król (A, J, Q, K)
Uwaga: Możesz wziąć 10 jako T
Wydajność
Truthy/Falsy
wartość
Przypadek testowy
["AS", "2S", "3S", "4S", "5S"] => true
["3D", "9C", "4S", "KH", "AD", "AC"] => false
["5D", "6D", "7D", "8H", "9D", "10D", "JD"] => false
["JC", "7C", "5D", "8C", "AC", "10C", "9C", "5S"] =>true
[] => false
["AS", "2S", "3S"] => false
["JC", "QC", "KC", "AC", "2C"] => false
[ "2H", "3H", "4H", "5H", "6H", "7H"] => true
Obowiązują standardowe zasady gry w golfa .
Kryteria wygranej: Najkrótszy kod w każdym języku
źródło
10
jakoT
?Odpowiedzi:
Python 2 , 95 bajtów
Wypróbuj online!
Istnieje 40 możliwych prostych rzutów, a to po prostu sprawdza je wszystkie. Chas Brown zapisał 2 bajty; Jo King uratował jeszcze 4.
źródło
A
na obu końcach więc wierzę zmieniających36
się40
powinno go naprawić.R ,
128 1269491 bajtówWypróbuj online!
Oryginalna logika została znacznie skrócona przez @ J.Doe.
Tworzy macierz 26 na 26 z przeważnie bzdurami, ale wszystkie karty (z Aces powtórzonymi u dołu) zawarte w wierszach 10 do 23 w kolumnach 3,4,8 i 24. Matryca jest tworzona przez połączenie wszystkich kombinacji wielkich liter alfabet z literami od J do X zastąpionymi przez A, 2-9, T, J, Q, K, A, S przez
chartr
. Otrzymujemy C, D, H za darmo!%in%
Spłaszcza matrycy Kolumnowa w wektorze. Następnie sprawdź, czy kodowanie długości przebiegu jest większe niż 4 dla dowolnego przebieguTRUE
dopasowania.źródło
rle
ANDouter
! To oszczędza dwa bajtyouter
wywołania, które produkuje wiele nieprawidłowych kart, i użycie przymusu wektorowego,in
aby uniknąćapply
. Obaj muszą być na miejscu, aby to zadziałało!JavaScript (ES6), 116 bajtów
Wypróbuj online!
W jaki sposób?
źródło
Brachylog , 31 bajtów
Wypróbuj online!
źródło
Retina 0.8.2 , 66 bajtów
Wypróbuj online! Wyjaśnienie:
Konwertuj karty graficzne na ich wartości.
A
może wynosić 1 lub 14.Konwertuj wartość na unary i sufiks, aby karty były poprawnie sortowane.
Dopasuj 5 kart, które zwiększają się o 1 za każdym razem, i upewnij się, że ostatni wzrost wynosił dokładnie 1.
źródło
JavaScript (ES6), 106 bajtów
Akceptuje tablicę ciągów znaków kart, zastępując
10
jeT
. Wypróbuj online!Wyjaśnienie
Iteruje się nad każdą kartą i ustawia flagę w szeregu wartości logicznych, używając indeksu obliczonego z unikalnej kombinacji jego rangi i koloru. Ta tablica jest następnie stritowana, aby umożliwić dopasowanie wzorca 5 kolejnych prawdziwych wartości.
Na przykład ręka z pokerem może wytworzyć następujące elementy jako podciąg pełnego ciągu znaków w tablicy boolowskiej:
,,,,1,1,1,1,1,,,,
Ponieważ pierwsza wartość rangi (tj. A) jest przesunięta od początku łańcucha, zawsze będą puste wartości poprzedzające wszystkie
1
w tablicy, zapewniając, że reprezentacja łańcucha rozpocznie się od,
źródło
Java 10,
189167165164160157156 bajtówPobiera dane wejściowe jako pojedynczy łańcuch rozdzielany spacjami (tj
"AS 2S 3S 4S 5S"
.).-22 bajty dzięki @ OlivierGrégoire .
-1 bajt dzięki @AlexRacer .
Wypróbuj online.
Wersja kodu w golfa , której użyłem do projektu Euler # 54 , który zrobiłem przede wszystkim z wyrażeniami regularnymi (dla zabawy i aby dowiedzieć się więcej o wyrażeniach regularnych). Bez wyrażeń regularnych byłoby to prawdopodobnie lepsze dla wydajności i łatwiejsze (prawdopodobnie dotyczy to również gry w golfa; przyjrzymy się później).
Wyjaśnienie:
Dodatkowe wyjaśnienie wyrażenia regularnego:
"AKQJT98765432A".substring(i,i+5)
bierze pięć sąsiednich kart na podstawiei
.replaceAll(".","(?=.*$0\\\\1)")
zamienia każdą z tych kart na"(?=.*c\\1)"
(gdziec
jest postać karty).replaceFirst(".1","([HSDC])")
będzie następnie zastąpić pierwszy\\1
z([HSDC])
.Oznacza to, że całkowite wyrażenie regularne, aby sprawdzić strit prosty dla kart w zakresie wartości,
[9,5]
wyniesie:^(?=.*9([HSDC]))(?=.*8\\1)(?=.*7\\1)(?=.*6\\1)(?=.*5\\1).*$
(UWAGA:
String#matches
domyślnie dodaje znak końca / wiodący,^...$
aby sprawdzić cały ciąg.) Ten wyrażenie regularne:źródło
".*"+
prefiks.f
break
sięi=-2
i powrót doreturn-1>i;
korzystania z podejścia (i 2 więcej zmienia(.)
się.
i$1
to$0
). :)Czysty ,
145135 bajtówWypróbuj online!
Uproszczony:
źródło
Japt , 37 bajtów
Pobiera dane wejściowe jako tablicę 2D.
Spróbuj
Wyjaśnienie
źródło
Galaretka , 18 bajtów
Wypróbuj online!
[..., ...]
Format wyjściowy: pusta lista jako fałsz, niepusta lista jako prawda.
źródło
PHP , 264 bajty
To echo
1
, czy jest to poker i0
czynull
jeśli nie.Jeśli nazwiesz plik,
1X
możesz go zapisać,11 bytes
ponieważ nie musisz go zmieniać$argv[0]
. Nie jestem pewien, dlaczego nazwa pliku może go złamać.Z jakiegoś powodu struny
:;<=>
dostać sortowane przed strun0123456789
przezasort
w TIO chociaż:;<=>
mają wartości ASCII 58-62 i0123456789
mają wartości ASCII 48-57. Więc jeśli weźmiesz kod z linku TIO lub poniżej i użyjesz PHPTester z następującym pakietem testowym, to zadziała .Kod TIO
Wypróbuj online!
źródło
Kotlin , 226 bajtów
Używa T dla 10, więc wszystkie karty mają długość 2 znaków.
Wypróbuj online!
źródło
Pascal (FPC) ,
223216210209 bajtówWypróbuj online!
Wykorzystuje
T
do 10. Wejście zawiera 1 kartę w linii.Teraz grałem w golfa tak bardzo, że nie wiem już, jak to działa ...
Wyjaśnienie:
źródło