En este ejercicio vas a implementar un programa que determina el estado de una partida de tres en línea. (También puedes conocerlo como «noughts and crosses» o «Xs and Os».)
La partida se juega en una cuadrícula de 3×3.
Las personas que juegan se turnan para colocar Xs y Os en la cuadrícula.
El juego termina cuando alguien gana al colocar tres de sus marcas en una fila, una columna o una diagonal de la cuadrícula, o cuando se llena toda la cuadrícula.
En este ejercicio supondremos que X empieza.
Tu tarea es determinar en qué estado se encuentra una partida dada.
Hay 3 estados posibles del juego:
Si el tablero dado no es válido, lanza un error apropiado.
Un tablero no es válido si cumple las siguientes condiciones:
X empieza). | |
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 salto de 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.