Cheat è un gioco di carte in cui stai cercando di sbarazzarti della tua mano. Una svolta sembra più o meno così:
- Determina quale rango di carte devi giocare in quel turno. Nella maggior parte delle varianti questo è un rango superiore rispetto al turno precedente.
- Gioca 1-4 carte a faccia in giù. Questi non devono corrispondere al grado valido. In caso contrario, è considerato un imbroglione . A questo punto qualsiasi giocatore può sfidarti .
- Se nessuno ti sfida, il gioco continua al giocatore successivo.
- Se qualcuno ti sfida e non hai imbrogliato, devono prendere tutte le carte giocate.
- Se qualcuno ti sfida e hai imbrogliato, devi prendere tutte le carte giocate.
La strategia è principalmente un mix di bluff e conteggio delle carte. Sono cattivo in matematica, però, quindi ho intenzione di tradire Cheat e portare un robot con me.
Ingresso
L'input sarà, nell'ordine o nel formato desiderato:
- La mano del giocatore. Se so che devono avere delle carte (per esempio, le ho viste raccoglierle), quelle saranno elencate in ordine crescente. Eventuali incognite verranno elencate in seguito come
?
. Ad esempio, se hanno sei carte e so che due sono 1 e uno è 4, una valida rappresentazione della mano è114???
. ? saranno sempre elencati dopo le carte conosciute.141???
e11???4
sono entrambi input non validi e il tuo codice non deve gestirli. - Le carte che sicuramente conosco non fanno parte della loro mano (le ho, ho visto qualcun altro prenderle, ecc.). L'elenco sarà in ordine crescente di rango. L'elenco potrebbe essere vuoto.
- Le carte che il giocatore ha affermato di giocare. Se affermassero di giocare a 3 7, un possibile input qui sarebbe
777
. Le carte avranno sempre lo stesso valore.
Il numero di carte giocate sarà sempre 1-4 e i ranghi saranno sempre 0-9. Un rango non apparirà mai più di quattro volte nella loro mano + non nella loro mano.
Questo è un input valido di esempio:
33577??
01555688
55
Questo è un esempio di input non valido:
35377?? # Out of order
7779 # Five 7's in total
23 # Two separate ranks played
Produzione
Un valore veritiero se dovessimo assolutamente sfidare. Un valore falso se potremmo non voler sfidare.
Sfidiamo sempre se sappiamo che hanno imbrogliato. Sappiamo che hanno imbrogliato se giocavano a carte che non avrebbero potuto avere:
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
L'altra volta che sfidiamo è se giocano le loro ultime carte. Anche se il gioco è legittimo, finirebbe il gioco, quindi potremmo anche sfidarlo.
1
1 # They'd win, so challenge anyway
Altri casi di test
Verità (dovrebbe sfidare)
11445678?
22
-------------
????????
4
4444
-------------
12345678
9
Falsey (non dovrebbe sfidare)
1?
222
2
-------------
12?
22
22
-------------
?????
1111
punteggio
Il codice più corto vince.