Neste exercício, você vai implementar um programa que determina o estado de um jogo da velha tic-tac-toe. (Talvez você também conheça o jogo como "noughts and crosses" ou "Xs and Os".)
O jogo é disputado em uma grade 3×3.
Os jogadores se revezam colocando Xs e Os na grade.
O jogo termina quando um jogador vence ao alinhar três marcas em uma linha, uma coluna ou uma diagonal da grade, ou quando a grade inteira está preenchida.
Neste exercício, vamos supor que X começa.
Sua tarefa é determinar em que estado um determinado jogo está.
Existem 3 estados possíveis para o jogo:
Se o tabuleiro informado for inválido, lance um erro apropriado.
Um tabuleiro é inválido se atender às seguintes condições:
X começa). | |
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
___|___|___
| |
| |
| |
O tabuleiro é representado como uma string terminada em nulo, com um caractere de nova linha no final de cada linha.
Um exemplo seria "X \n XO\nOX \n"
| Registrador | Uso | Tipo | Descrição |
|---|---|---|---|
$a0 |
entrada | endereço | string de entrada terminada em nulo |
$v0 |
saída | inteiro | estado do jogo (1 = ongoing, 2 = draw, 3 = win, -1 = error) |
$t0-9 |
temporário | qualquer | para armazenamento temporário |
Crie sua conta no Exercism para aprender e dominar MIPS Assembly com 70 exercícios e mentoria humana de verdade, tudo de graça.