Matriz em espiral

Matriz em espiral

Médio

Introdução

Numa pequena aldeia perto de uma floresta antiga, havia a lenda de um tesouro escondido, enterrado bem no fundo da mata. Apesar das inúmeras tentativas, ninguém tinha conseguido encontrá-lo. Mas isso estava prestes a mudar, graças a uma jovem exploradora chamada Elara. Tinha descoberto um documento antigo com instruções sobre como localizar o tesouro. Com essas instruções, Elara conseguiu desenhar um mapa que revelava o caminho até ao tesouro.

Para sua surpresa, o caminho seguia uma estranha espiral no sentido dos ponteiros do relógio. Não admira que ninguém tivesse conseguido encontrar o tesouro antes! Com o mapa na mão, Elara parte à descoberta do tesouro escondido.

Instruções

A tua tarefa é devolver uma matriz quadrada de um determinado tamanho.

A matriz deve ser preenchida com números naturais, começando em 1 no canto superior esquerdo e aumentando em espiral para dentro, no sentido dos ponteiros do relógio, como nos exemplos seguintes:

Exemplos

Matriz em espiral de tamanho 3

1 2 3
8 9 4
7 6 5

Matriz em espiral de tamanho 4

 1  2  3 4
12 13 14 5
11 16 15 6
10  9  8 7

A saída deve ser organizada em ordem por linhas: primeiro as palavras da primeira linha, depois as palavras da segunda linha, e assim sucessivamente.

Registos

Registo Utilização Tipo Descrição
$a0 entrada inteiro tamanho
$a1 entrada/saída endereço matriz de palavras, em ordem por linhas
$v0 saída inteiro número de palavras na matriz
$t0-9 temporário qualquer para armazenamento temporário
Editar via GitHub A ligação abre numa nova janela ou separador
MIPS Assembly Exercism

Estás pronto para começar Matriz em espiral?

Inscreve-te no Exercism para aprenderes e dominares MIPS Assembly com 70 exercícios, e mentoria humana real, tudo grátis.