tło
Brag to gra karciana podobna do koncepcji, ale prostsza niż poker. Ręka w chwale składa się z trzech kart i ma następującą wartość od najwyższej do najniższej:
Trójka - wszystkie trzy karty mają tę samą rangę. Nazwany „trzema królami” itp.
Uruchamianie koloru, czyli proste kolor. Wszystkie trzy karty tego samego koloru i kolejnych stopni. Ręka jest nazywana trzema kartami w kolejności rosnącej, po której następują słowa „na odbiciu”, aby odróżnić od prostego biegu / strita, np. „Ten-jack-queen na odbiciu”. Zauważ, że as jest albo wysoki, albo niski, ale nie oba - „król-as-dwa” nie jest biegiem.
Biegnij aka prosto. Jak wyżej, ale bez wymogu dopasowania kolorów. Nazwany po prostu jako np. „Ten-jack-queen”.
Kolor - wszystkie trzy karty tego samego koloru, nazwane na cześć najwyższej rangi, np. „Kolor asa”.
Para - dwie karty tej samej wartości wraz z jedną trzecią innej wersji wersji. Nazwany jako „para trójek” itp.
Każda inna kombinacja, nazwana na cześć najwyższej rangi, np. „Wysoka asa”.
Wyzwanie
Biorąc pod uwagę trzy karty do gry, wypisz nazwę chwalonej przez siebie ręki.
Karty będą wprowadzane albo jako trzy 2-znakowe ciągi, albo połączone jako pojedynczy 6-znakowy ciąg (w zależności od tego, co preferuje twoja implementacja), gdzie pierwszą z każdej pary jest ranga (2 ... 9, T, J, Q, K, A), a drugi oznacza kolor (H, C, D, S).
Obowiązują standardowe zasady gry w golfa - napisz program lub funkcję, która akceptuje te dane wejściowe i wyświetla nazwę rozdania, jak opisano powyżej.
Możesz założyć, że dane wejściowe będą prawidłowe (rangi i kolory w powyższym zakresie, brak powtarzanej karty) i w każdym innym przypadku, ale nie w określonej kolejności.
Dane wyjściowe muszą być pisane wielkimi i małymi literami lub rozsądnie dużymi literami, np. Tytuły lub zdania. Rangi numeryczne należy przeliterować, np. „Dziesiątki”, a nie 10.
Przykładowe wejścia i wyjścia:
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"
To moja pierwsza próba wyzwania na tej stronie, proszę sugerować ulepszenia, ale bądź łagodny :)
źródło
"6D6C6S"
jako przypadek testowy, ponieważ sześć to nieparzysta liczba mnogaOdpowiedzi:
Ruby,
384, 320Akceptuje tablicę ciągów dwóch znaków.
Przekłada wartości pip na wartości szesnastkowe i identyfikuje wskazówki na podstawie liczby różnych wartości pip.
Adnotacja:
źródło
Python 2 ,
788, 715, 559, 556, 554, 546, 568,522 bajtów* teraz mija „szóstki” * dzięki Benowi Frankelowi za uratowanie 46 bajtów!
Wypróbuj online!
Dzięki za fajne pierwsze wyzwanie!
źródło
D.get(a, b)
oznacza dostęp do wartości w dykcie D pod klawiszem a, z wartością domyślną b, jeśli klucz nie zostanie znaleziony. To jest to samo co pisanieD[a] if a in D else b
, co jest takie samo jak pisanieD[a] if a in D.keys() else b
.PHP,
413405398409408406398 bajtówNiestety PHP nie obsługuje odwoływania się do zagnieżdżonych tablic wewnątrz ciągów;
zaoszczędziłoby to kolejne
65 bajtów.Uruchom go
echo <hand> | php -nR '<code>
lub przetestuj online .awaria
Wymaga PHP> = 5.6 (dla
e[...]
)źródło
Python 2 - 583 bajtów
Jestem zbyt nowy, aby móc komentować posty, więc po prostu publikuję moją wersję rozwiązania w języku Python.
Naprawiono problem z „es” dla pary i trzech z szóstek. Dzięki nie temu Charlesowi
Trochę bardziej czytelny z kilkoma komentarzami
źródło
j=0; if [z]*3==v:r="three %ss"%i(z)
naif [z]*3==v:r="three %ss"%d[z][0]
Ale oszczędza tylko 1 bajt