Rod sta moderando un gioco di carte tra due giocatori: George e Tim. Attualmente, Tim sta mescolando le carte. Rod sospetta che Tim stia cercando di imbrogliare, quindi ha bisogno del tuo aiuto per verificare che lo shuffle sia corretto.
Tim sta facendo il riordino esagerato: taglia una pila di carte dal fondo del mazzo, quindi taglia varie parti dalla cima del mazzo alla cima del mazzo e ripete il processo alcune volte.
Rod ha gli occhi di un'aquila e può vedere esattamente quante carte Tim sta tagliando ogni volta, tuttavia non può calcolare e tenere traccia delle carte con la stessa velocità di Tim che mescola. È qui che entri: Rod vorrebbe che tu scrivessi un programma o una funzione che ottenga le informazioni di mescolamento dettagliate e determini se lo shuffle è giusto, debole o un trucco.
- Se dopo il mescolamento, meno di 25 coppie di carte adiacenti rimangono adiacenti (nello stesso ordine), allora la mescolanza è corretta e il gioco può continuare.
- Se almeno 25 (ma non tutte) coppie di carte adiacenti rimangono adiacenti, la mescolanza è debole e Rod agiterà Tim sulla testa e gli chiederà di mescolare ancora.
- Se alla fine tutte le carte rimangono nella stessa posizione, allora Tim sta ovviamente barando e Rod lo colpisce con una grande trota.
Questo è il codice golf, quindi vince il codice più corto.
Ingresso:
Otterrai una serie di numeri tra 0 e 52 (entrambi esclusivi) separati da spazio, su più righe, in cui ogni riga rappresenta un round di mescolanza che inizia e termina con tutte le carte ammassate insieme.
Su ogni riga, il primo numero è il numero di carte che Tim taglia dalla parte inferiore del mazzo, e ogni numero successivo è un numero di carte che cade dalla sua mano nella parte superiore del mazzo. Se rimangono delle carte dopo l'ultimo numero su una linea, dovresti supporre che Tim le metta in cima al mazzo.
L'input è garantito per essere valido. C'è almeno una riga di numeri e ogni riga contiene almeno 2 numeri. Il primo numero su ogni riga non è inferiore alla somma di tutti gli altri numeri sulla stessa riga. Una nuova riga finale è facoltativa, si può presumere che l'input ne abbia uno o che non ne abbia uno.
Produzione:
Il tuo programma dovrebbe stampare / restituire "equo" se lo shuffle è giusto, "debole" se lo shuffle è debole e "ingannare" se Tim sta mantenendo tutte le carte nello stesso ordine. Una nuova riga finale è facoltativa.
Esempio:
Si presume che il mazzo abbia 52 carte, ma a scopo dimostrativo userò un mazzo più piccolo di 10 carte.
Ingresso:
5 3 1
4 2 2
Mazzo iniziale, visto dall'alto: 0 1 2 3 4 5 6 7 8 9
5
➜ 0 1 2 3 4
( 5 6 7 8 9
in mano)
3
➜ 5 6 7 0 1 2 3 4
( 8 9
in mano)
1
➜ 8 5 6 7 0 1 2 3 4
( 9
in mano)
fine della linea ➜ 9 8 5 6 7 0 1 2 3 4
4
➜ 9 8 5 6 7 0
( 1 2 3 4
in mano)
2
➜ 1 2 9 8 5 6 7 0
( 3 4
in mano)
2
➜ 3 4 1 2 9 8 5 6 7 0
4 coppie rimangono adiacenti:(3 4) (1 2) (5 6) (6 7)
Casi test:
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
Produzione: fair
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5
Produzione: weak
29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3
Produzione: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
Produzione: weak
26 13
26 13
26 13
26 13
Produzione: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Produzione: weak
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Produzione: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Produzione: fair
Requisiti:
- Se si scrive una funzione, può leggere l'input standard o ricevere l'input come parametro a stringa singola. Inoltre, la funzione può stampare l'output o restituirlo.
- Il programma deve essere eseguibile su Linux utilizzando software disponibile gratuitamente.
- Il codice sorgente deve usare solo caratteri ASCII.
- Nessuna scappatoia standard.