Scrivi un programma per giocare a Connect 4 . Ti viene dato lo stato del tabellone come input e devi decidere in quale colonna posizionare il tuo pezzo per ottenere 4 di fila (orizzontalmente, verticalmente o diagonalmente) o impedire al tuo avversario di fare lo stesso.
Il tabellone è un array 6x7, dove ogni cella può essere vuota (''), contenere il tuo pezzo ('X') o il pezzo del tuo avversario ('O'). Una scheda di esempio:
O
XX X
XOX OO
XOO OXO
OXXOXXO
XOXOXOX
Ti piacerebbe giocare nella colonna 3 (le colonne sono 0-6, numerate da sinistra) per la vittoria diagonale. Quindi hai prodotto:
3
Il codice deve generare un numero di colonna e deve soddisfare i seguenti criteri:
- Non puoi giocare in una colonna che contiene già 6 pezzi.
- Se c'è almeno una mossa vincente, devi giocarne una.
- Se riesci a impedire al tuo avversario di vincere alla sua prossima mossa, devi farlo.
Nota che il gioco ottimale non è necessario, solo che ottieni una vittoria immediata o impedisci la vittoria immediata dell'avversario. Se il tuo avversario ha più di un modo per vincere, non è necessario bloccarne uno.
Ti viene data la scheda sull'input standard e devi stampare un numero di colonna in cui vuoi giocare sull'output standard. Il tabellone è garantito per essere ben formato (niente buche, almeno una mossa possibile) e non avere già una vittoria per nessuno dei due giocatori.
Il codice più corto vince.
Esempio 1
X
O
X
O
OOO X
XXX O
Devi giocare la colonna 0 o 4 per la vittoria.
Esempio 2
X
X X
O O
XOX XO
XXO XOX
XXO XXO
Devi giocare alla colonna 3 per bloccare la vittoria immediata del tuo avversario.
Esempio 3
X
XO
OX O
XO XX
XXO OOO
OOO XXO
Non puoi vincere o fermare la vittoria del tuo avversario, quindi puoi giocare qualsiasi colonna 1-6 (0 è pieno).
Esempio 4
X
O
X
OOO
XOX
OXOX
Non puoi giocare nella colonna 3, in quanto consente al tuo avversario di vincere immediatamente. Puoi giocare nelle colonne 1-2 o 4-6.