Se le da una matriz cuadrada de ancho , que contiene números cuadrados .
Su tarea es hacer que todos los números cuadrados "exploten" hasta que todos hayan desaparecido. Debe imprimir o devolver la matriz final.
Más específicamente:
- Busque el cuadrado más alto en la matriz.
- Busque su vecino adyacente más pequeño (ya sea horizontal o verticalmente y sin envolver).
- Reemplace con y reemplace con n × x .
Repita el proceso desde el paso 1 hasta que ya no haya cuadrado en la matriz.
Ejemplo
Matriz de entrada:
El cuadrado más alto explota en dos partes de y se fusiona con su vecino más pequeño , que se convierte en 36 × 25 = 900 :
El cuadrado más alto explota y se fusiona con su vecino más pequeño :
El cuadrado más alto explota y se fusiona con su vecino más pequeño :
El único cuadrado restante explota y se fusiona con su vecino más pequeño :
Ya no hay cuadrado, así que hemos terminado.
Reglas
- Se garantiza que la matriz de entrada tiene las siguientes propiedades:
- en cada paso, el cuadrado más alto siempre será único
- en cada paso, el vecino más pequeño del cuadrado más alto siempre será único
- la secuencia no se repetirá para siempre
- La matriz inicial puede contener 's, pero no tiene que preocuparse por hacer que explote, ya que nunca será el cuadrado más alto o único.
- Las E / S se pueden procesar en cualquier formato razonable
- Esto es código golf
Casos de prueba
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.
¿Puedo modificar la matriz de entrada en su lugar?Respuestas:
R ,
301287277274222217195186178174 bytesNada particularmente creativo, incluido el almacenamiento en búfer cero de los elementos periféricos de la matriz de entrada, una versión anterior más tarde mejorada por Robin:
Pruébalo en línea
Utilizando una secuencia de números como su entrada y, por lo tanto, eliminando la llamada a una función, Nick Kennedy administró anteriormente una versión de 186 bytes del algoritmo de la siguiente manera (con -10 bytes por Robin ):
evitando la definición de una función (recursiva), más otras buenas ganancias.
Pruébalo en línea
fuente
Ruby ,
140135 bytesToma una lista plana como entrada, emite una lista plana.
Pruébalo en línea!
Explicación:
fuente
Python 2 , 188 bytes
Pruébalo en línea!
Programa completo Toma entrada e imprime como una lista plana.
fuente
Perl 6 , 236 bytes
Pruébalo en línea!
fuente
MATL ,
4948 bytesPruébalo en línea! O verificar todos los casos de prueba .
Cómo funciona
fuente
JavaScript (ES6),
271259250245 bytes¡Gracias a Luis felipe De jesus Munoz por −14 bytes!
Explicación:
fuente
C # (compilador interactivo de Visual C #) , 220 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 224 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) , 157 bytes
Pruébalo en línea!
-14 bytes gracias a @Arnauld que también escribió un buen arnés de prueba :)
Función anónima que toma una matriz unidimensional como entrada y un parámetro de longitud que especifica el número de columnas / filas.
La entrada al curry se especifica como
f(array)(length)
.fuente
Java 8,
299297 bytesModifica la matriz de entrada en lugar de devolver una nueva para guardar bytes.
Pruébalo en línea.
Explicación:
fuente
Jalea ,
7067 bytesPruébalo en línea!
Estoy seguro de que esto se puede hacer mucho más brevemente, pero me pareció más difícil de lo que parecía. Explicación a seguir una vez que he intentado jugar mejor al golf.
Un programa completo que toma una lista de enteros correspondientes a la matriz cuadrada y devuelve una lista de enteros que representan la matriz explotada final.
fuente