En este ejercicio vas a implementar un programa que determina el estado de una partida de tic-tac-toe. (También es posible que conozcas este juego como «tres en raya» o «equis y ceros».)
El juego se juega en una cuadrícula de 3×3.
Los jugadores se turnan para colocar las X y las O en la cuadrícula.
El juego termina cuando un jugador gana al colocar tres de sus marcas en una fila, una columna o una diagonal de la cuadrícula, o cuando esta se llena por completo.
En este ejercicio, supondremos que empieza X.
Tu tarea es determinar en qué estado se encuentra una partida dada.
Hay 3 estados posibles de partida:
Si el tablero dado no es válido, lanza un error adecuado.
Un tablero no es válido si cumple las siguientes condiciones:
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
___|___|___
| |
| |
| |
El tablero se representa como un string terminado en nulo, con un carácter de nueva línea al final de cada fila.
Un ejemplo sería "X \n XO\nOX \n"
| Registro | Uso | Tipo | Descripción |
|---|---|---|---|
$a0 |
entrada | dirección | string de entrada terminado en nulo |
$v0 |
salida | entero | estado del juego (1 = ongoing, 2 = draw, 3 = win, -1 = error) |
$t0-9 |
temporal | cualquiera | para almacenamiento temporal |
Regístrate en Exercism para aprender y dominar MIPS Assembly con 70 ejercicios y mentoría humana real, todo gratis.