Tracks
/
MIPS Assembly
MIPS Assembly
/
Ejercicios
/
Estado del tres en línea
Estado del tres en línea

Estado del tres en línea

Intermedia

Instrucciones

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:

  • La partida está ongoing.
  • La partida terminó en draw.
  • La partida terminó en win.

Si el tablero dado no es válido, lanza un error apropiado.

Un tablero no es válido si cumple las siguientes condiciones:

  • No se puede llegar al tablero dado si los turnos se toman en el orden correcto (recuerda que X empieza).
  • Se siguió jugando después de que la partida ya había terminado.

Ejemplos

Partida en curso

   |   |
 X |   |
___|___|___
   |   |
   | X | O
___|___|___
   |   |
 O | X |
   |   |

Empate

   |   |
 X | O | X
___|___|___
   |   |
 X | X | O
___|___|___
   |   |
 O | X | O
   |   |

Victoria

   |   |
 X | X | X
___|___|___
   |   |
   | O | O
___|___|___
   |   |
   |   |
   |   |

Inválido

Orden de turnos incorrecto
   |   |
 O | O | X
___|___|___
   |   |
   |   |
___|___|___
   |   |
   |   |
   |   |
Se siguió jugando después de la victoria
   |   |
 X | X | X
___|___|___
   |   |
 O | O | O
___|___|___
   |   |
   |   |
   |   |

Formato del tablero

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"

Registros

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
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
MIPS Assembly Exercism

¿Todo listo para empezar Estado del tres en línea?

Regístrate en Exercism para aprender y dominar MIPS Assembly con 70 ejercicios y mentoría humana real, todo gratis.