On vous donne une matrice carrée de largeur , contenant des nombres carrés .
Votre tâche consiste à faire exploser tous les nombres carrés jusqu'à ce qu'ils aient tous disparu. Vous devez imprimer ou renvoyer la matrice finale.
Plus précisement:
- Recherchez le carré le plus haut dans la matrice.
- Recherchez son plus petit voisin adjacent (horizontalement ou verticalement et sans enrouler autour).
- Remplacez par et remplacez par .
Répétez le processus de l'étape 1 jusqu'à ce qu'il n'y ait plus de carré dans la matrice.
Exemple
Matrice d'entrée:
Le plus haut carré explose en deux parties de et fusionne avec son plus petit voisin, qui devient:
Le plus haut carré explose et fusionne avec son plus petit voisin :
Le plus haut carré explose et fusionne avec son plus petit voisin :
Le seul carré restant explose et fusionne avec son plus petit voisin :
Il n'y a plus de carré, nous avons donc terminé.
Règles
- La matrice d'entrée est garantie d'avoir les propriétés suivantes:
- à chaque étape, le carré le plus haut sera toujours unique
- à chaque étape, le plus petit voisin de la plus haute place sera toujours unique
- la séquence ne se répétera pas éternellement
- La matrice initiale peut contenir , mais vous n'avez pas à vous soucier de faire exploser , car ce ne sera jamais le plus haut ou le seul carré restant.
- Les E / S peuvent être traitées dans n'importe quel format raisonnable
- C'est du code-golf
Cas de test
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.
Puis-je modifier la matrice d'entrée à la place?Réponses:
R ,
301287277274222217195186178174 octetsRien de particulièrement créatif, y compris la mise en mémoire tampon zéro des éléments périphériques de la matrice d'entrée, une version antérieure améliorée par la suite par Robin:
Essayez-le en ligne
En utilisant une séquence de nombres comme entrée, et donc en supprimant l'appel à une fonction, Nick Kennedy a précédemment géré une version de 186 octets de l'algorithme comme suit (avec -10 octets par Robin ):
éviter la définition d'une fonction (récursive), ainsi que d'autres bons gains.
Essayez-le en ligne
la source
Rubis ,
140135 octetsPrend une liste plate comme entrée, sort une liste plate.
Essayez-le en ligne!
Explication:
la source
Python 2 , 188 octets
Essayez-le en ligne!
Programme complet. Prend la saisie et imprime sous forme de liste plate.
la source
Perl 6 , 236 octets
Essayez-le en ligne!
la source
MATL ,
4948 octetsEssayez-le en ligne! Ou vérifiez tous les cas de test .
Comment ça fonctionne
la source
JavaScript (ES6),
271259250245 octetsMerci à Luis felipe De jesus Munoz pour −14 octets!
Explication:
la source
C # (Visual C # Interactive Compiler) , 220 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 224 octets
Essayez-le en ligne!
la source
JavaScript (Node.js) , 157 octets
Essayez-le en ligne!
-14 octets remercie le @Arnauld qui a également écrit un joli harnais de test :)
Fonction anonyme qui prend un tableau unidimensionnel en entrée et un paramètre de longueur spécifiant le nombre de colonnes / lignes.
L'entrée curry est spécifiée comme
f(array)(length)
.la source
Java 8,
299297 octetsModifie la matrice d'entrée au lieu d'en renvoyer une nouvelle pour économiser des octets.
Essayez-le en ligne.
Explication:
la source
Gelée ,
7067 octetsEssayez-le en ligne!
Je suis sûr que cela peut être fait beaucoup plus brièvement, mais j'ai trouvé cela plus difficile qu'il n'y paraissait au départ. Explication à suivre une fois que j'aurai essayé de mieux jouer au golf.
Un programme complet qui prend une liste d'entiers correspondant à la matrice carrée et renvoie une liste d'entiers représentant la matrice éclatée finale.l
la source