La banca è stata fatta a pezzi e tutti i criminali mafiosi locali hanno un alibi insolito: erano a casa a giocare a Connect 4! Al fine di aiutare con l'indagine, ti viene chiesto di scrivere un programma per convalidare tutte le schede Connect 4 che sono state sequestrate al fine di verificare che le posizioni siano effettivamente posizioni di un gioco Connect 4 valido e che non siano state frettolosamente messe insieme non appena la polizia ha bussato alla porta.
Le regole per connettere 4: giocatori R
e Y
, a turno, rilasciare tessere del loro colore in colonne di una griglia 7x6. Quando un giocatore lascia cadere una tessera nella colonna, cade per occupare la posizione più bassa non riempita in quella colonna. Se un giocatore riesce a ottenere una scala orizzontale, verticale o diagonale di quattro tessere del suo colore sul tabellone, allora vince e il gioco termina immediatamente.
Ad esempio (con l' R
avvio), la seguente è una posizione di Connect 4 impossibile.
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | |
| | |Y| | | | |
|R| |Y| | | | |
Il programma o la funzione deve contenere una scheda Connect 4 e restituirla
- Un valore falso, che indica che la posizione è impossibile o
- Una stringa di numeri da 1 a 7, indicando una possibile sequenza di movimenti che portano a tale posizione (le colonne sono numerate
1
da7
da sinistra a destra, e quindi la sequenza112
, per esempio, indica una mossa rosso nella colonna1
, seguita da una mossa giallo nella colonna1
, seguito da una mossa rossa nella colonna2
). Se lo desideri, puoi scegliere una numerazione di colonna diversa da 1234567, purché sia specificato nella soluzione. Se si desidera restituire l'elenco in qualche altro formato; per esempio come un array,[2, 4, 3, 1, 1, 3]
allora va bene, purché sia facile vedere quali sono le mosse.
Puoi scegliere di leggere il tabellone in qualsiasi formato ragionevole incluso l'uso di lettere diverse da R
e Y
per i giocatori, ma devi specificare quale giocatore inizia per primo. Puoi presumere che il tabellone sarà sempre 6x7, con due giocatori.
Puoi presumere che le posizioni che ricevi siano almeno fisicamente possibili da creare su una scheda Connect 4 standard; cioè che non ci saranno pezzi "fluttuanti". Puoi presumere che la scheda non sarà vuota.
Questo è il golf del codice, quindi vince la risposta più breve. Si applicano scappatoie standard.
Esempi
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 1234567 (one possible answer)
| | | | | | | |
|R|Y|R|Y|R|Y|R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | | --> false
| | |Y| | | | |
|R| |Y| | | | |
| | | | | | | |
| | |Y| | | | |
| | |R| | | | |
| | |Y| | | | | --> 323333 (only possible answer)
| | |R| | | | |
| |Y|R| | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> false (this is the position arising after
| |Y|Y|Y|Y| | | the moves 11223344, but using those moves
| |R|R|R|R| | | the game would have ended once R made a 4)
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> 2134231211 (among other possibilities)
|R|R|Y| | | | |
|Y|R|R|Y| | | |
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> false (for example, 21342312117 does not
|R|R|Y| | | | | work, because Y has already made a diagonal 4)
|Y|R|R|Y| | |R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 112244553 or similar
|Y|Y| |Y|Y| | |
|R|R|R|R|R| | |