Você recebe uma matriz quadrada de largura , contendo números quadrados .
Sua tarefa é fazer com que todos os números quadrados 'explodam' até que todos eles desapareçam. Você deve imprimir ou retornar a matriz final.
Mais especificamente:
- Procure o quadrado mais alto na matriz.
- Procure o menor vizinho adjacente (na horizontal ou na vertical e sem enrolar).
- Substitua por e substitua por .
Repita o processo da etapa 1 até que não haja mais quadrado na matriz.
Exemplo
Matriz de entrada:
O quadrado mais alto explode em duas partes de e funde-se com o menor vizinho, que se torna:
O quadrado mais alto explode e se funde com o menor vizinho :
O quadrado mais alto explode e se funde com o menor vizinho :
O único quadrado restante explode e se funde com o menor vizinho :
Não há mais quadrado, então terminamos.
Regras
- A matriz de entrada é garantida para ter as seguintes propriedades:
- a cada passo, o quadrado mais alto será sempre único
- a cada passo, o menor vizinho da praça mais alta sempre será único
- a sequência não se repetirá para sempre
- A matriz inicial pode conter 's, mas você não precisa se preocupar em fazer explodir, pois nunca será o quadrado mais alto ou o único restante.
- A E / S pode ser processada em qualquer formato razoável
- Isso é código-golfe
Casos de teste
Input : [[16,9],[4,25]]
Output: [[24,6],[20,5]]
Input : [[9,4],[1,25]]
Output: [[3,12],[5,5]]
Input : [[625,36],[196,324]]
Output: [[750,540],[14,252]]
Input : [[1,9,49],[1,4,1],[36,25,1]]
Output: [[3,6,7],[6,2,7],[6,5,5]]
Input : [[81,4,64],[16,361,64],[169,289,400]]
Output: [[3,5472,8],[624,323,1280],[13,17,20]]
Input : [[36,100,1],[49,144,256],[25,49,81]]
Output: [[6,80,2],[42,120,192],[175,21,189]]
Input : [[256,169,9,225],[36,121,144,81],[9,121,9,36],[400,361,100,9]]
Output: [[384,13,135,15],[24,1573,108,54],[180,11,108,6],[380,209,10,90]]
Input : [[9,361,784,144,484],[121,441,625,49,25],[256,100,36,81,529],[49,4,64,324,16],[25,1,841,196,9]]
Output: [[171,19,700,4032,22],[11,210,525,7,550],[176,60,6,63,23],[140,112,1152,162,368],[5,29,29,14,126]]
You must print or return the final matrix.
Posso modificar a matriz de entrada?Respostas:
R ,
301287277274222217195186178174 bytesNada de particularmente criativo, incluindo o buffer zero dos elementos periféricos da matriz de entrada, uma versão anterior posteriormente aprimorada por Robin:
Experimente on-line
Usando uma sequência de números como entrada e, portanto, removendo a chamada para uma função, Nick Kennedy gerenciava anteriormente uma versão de 186 bytes do algoritmo da seguinte maneira (com -10 bytes de Robin ):
evitando a definição de uma função (recursiva), além de outros bons ganhos.
Experimente on-line
fonte
Ruby ,
140135 bytesPega uma lista simples como entrada, gera uma lista simples.
Experimente online!
Explicação:
fonte
Python 2 , 188 bytes
Experimente online!
Programa completo. Recebe a entrada e imprime como uma lista simples.
fonte
Perl 6 , 236 bytes
Experimente online!
fonte
MATL ,
4948 bytesExperimente online!Ou verifique todos os casos de teste .
Como funciona
fonte
JavaScript (ES6),
271259250245 bytesObrigado a Luis felipe De jesus Munoz por −14 bytes!
Explicação:
fonte
C # (compilador interativo do Visual C #) , 220 bytes
Experimente online!
fonte
Wolfram Language (Mathematica) , 224 bytes
Experimente online!
fonte
JavaScript (Node.js) , 157 bytes
Experimente online!
-14 bytes graças ao @Arnauld, que também escreveu um ótimo equipamento de teste :)
Função anônima que usa uma matriz unidimensional como entrada e um parâmetro de comprimento que especifica o número se colunas / linhas.
A entrada ao curry é especificada como
f(array)(length)
.fonte
Java 8,
299297 bytesModifica a matriz de entrada em vez de retornar uma nova para salvar bytes.
Experimente online.
Explicação:
fonte
Geléia ,
7067 bytesExperimente online!
Tenho certeza de que isso pode ser feito muito mais brevemente, mas achei isso mais difícil do que parecia. Explicação a seguir depois de tentar jogar melhor.
Um programa completo que pega uma lista de números inteiros correspondentes à matriz quadrada e retorna uma lista de números inteiros que representam a matriz final explodida.l
fonte