Cheat to gra karciana, w której próbujesz pozbyć się ręki. Zakręt wygląda mniej więcej tak:
- Określ, jaką rangę karty musisz zagrać w tej turze. W większości wariantów jest to o jeden stopień wyższy niż w poprzedniej turze.
- Zagraj 1-4 karty, zakryte. Nie muszą one pasować do prawidłowej rangi. Jeśli nie, uważa się to za oszustwo . W tym momencie każdy gracz może cię wyzwać .
- Jeśli nikt nie rzuca ci wyzwania, gra przechodzi do następnego gracza.
- Jeśli ktoś rzuca ci wyzwanie, a ty nie zdradzasz, musi wziąć wszystkie zagrane karty.
- Jeśli ktoś rzuca ci wyzwanie, a ty oszukałeś, musisz wziąć wszystkie zagrane karty.
Strategia składa się głównie z blefowania i liczenia kart. Jestem zła z matematyki, więc zamierzam oszukiwać w Cheat i zabrać ze sobą bota.
Wejście
Dane wejściowe będą w dowolnej kolejności lub formacie:
- Ręka gracza. Jeśli wiem, że muszą mieć karty (na przykład widziałem, jak je podnoszą), zostaną one wymienione w kolejności rosnącej. Wszelkie niewiadome zostaną później wymienione jako
?
. Na przykład, jeśli mają sześć kart i wiem, że dwie to 1, a jedna to 4, poprawna reprezentacja ręki to114???
. ? będą zawsze wyświetlane po znanych kartach.141???
i11???4
oba są nieprawidłowymi danymi wejściowymi, a Twój kod nie musi ich obsługiwać. - Karty, które zdecydowanie znam, nie są częścią ich ręki (mam je, widziałem, jak ktoś inny je odbiera itp.). Lista będzie w porządku rosnącym. Lista może być pusta.
- Karty, które gracz rzekomo grał. Gdyby twierdzili, że zagrali 3 7, możliwy byłby tu wkład
777
. Karty zawsze będą miały tę samą rangę.
Liczba zagranych kart będzie zawsze wynosić 1-4, a rangi zawsze będą wynosić 0-9. Ranga nigdy nie pojawi się więcej niż cztery razy w ręce + nie w ręce.
To jest przykładowe prawidłowe wejście:
33577??
01555688
55
To jest przykładowe nieprawidłowe wejście:
35377?? # Out of order
7779 # Five 7's in total
23 # Two separate ranks played
Wynik
Prawdziwa wartość, jeśli zdecydowanie powinniśmy rzucić wyzwanie. Wartość falsey, jeśli nie chcemy kwestionować.
Zawsze rzucamy wyzwanie, jeśli wiemy, że oszukiwali. Wiemy, że oszukiwali, jeśli grali w karty, których nie mogliby mieć:
12
3 # They don't have any 3's or ?'s
-------------
12?
33 # Fewer ?'s than played cards
-------------
123?
333
33 # Since we have three 3's they can't have two
Drugi raz rzucamy wyzwanie, jeśli zagrają ostatnią kartę. Nawet jeśli gra jest legalna, kończy grę, więc równie dobrze możemy się z nią zmierzyć.
1
1 # They'd win, so challenge anyway
Więcej przypadków testowych
Prawda (powinna rzucić wyzwanie)
11445678?
22
-------------
????????
4
4444
-------------
12345678
9
Falsey (nie powinien rzucać wyzwania)
1?
222
2
-------------
12?
22
22
-------------
?????
1111
Punktacja
Najkrótszy kod wygrywa.