In questo esercizio implementerai un programma che determina lo stato di una partita a tris. (Potresti anche conoscere il gioco come «noughts and crosses» o «Xs and Os».)
La partita si gioca su una griglia 3×3.
I giocatori, a turno, posizionano X e O sulla griglia.
La partita termina quando un giocatore vince posizionando tre dei suoi simboli in una riga, in una colonna o lungo una diagonale della griglia, oppure quando l'intera griglia è piena.
In questo esercizio assumeremo che inizi X.
Il tuo compito è determinare in quale stato si trova una data partita.
Ci sono 3 possibili stati di gioco:
Se la griglia fornita non è valida, lancia un errore appropriato.
Una griglia è non valida se soddisfa le seguenti condizioni:
X). | |
X | |
___|___|___
| |
| X | O
___|___|___
| |
O | X |
| |
| |
X | O | X
___|___|___
| |
X | X | O
___|___|___
| |
O | X | O
| |
| |
X | X | X
___|___|___
| |
| O | O
___|___|___
| |
| |
| |
| |
O | O | X
___|___|___
| |
| |
___|___|___
| |
| |
| |
| |
X | X | X
___|___|___
| |
O | O | O
___|___|___
| |
| |
| |
La griglia è rappresentata come una stringa con terminatore nullo, con un carattere di nuova riga alla fine di ogni riga.
Un esempio sarebbe "X \n XO\nOX \n".
| Registro | Utilizzo | Tipo | Descrizione |
|---|---|---|---|
$a0 |
input | indirizzo | stringa di input con terminatore nullo |
$v0 |
output | intero | stato della partita (1 = ongoing, 2 = draw, 3 = win, -1 = error) |
$t0-9 |
temporaneo | qualsiasi | per l'archiviazione temporanea |
Iscriviti a Exercism per imparare e padroneggiare MIPS Assembly con 70 esercizi e il mentoring di persone reali, tutto gratis.