Permet de définir une matrice non vide, non triée et finie avec des nombres uniques comme suit:
Permet de définir 4 mouvements de matrice comme:
- ↑ * (haut): déplace une colonne vers le haut
- ↓ * (bas): déplace une colonne vers le bas
- → * (droite): Déplace une ligne vers la droite
- ← * (gauche): Déplace une ligne vers la gauche
L'astérisque (*) représente la colonne / ligne affectée par le déplacement (elle peut être indexée 0 ou indexée. À vous de choisir. Veuillez indiquer laquelle dans votre réponse).
Le défi est, en utilisant les mouvements ci-dessus, de trier la matrice dans un ordre ascendant (le coin supérieur gauche étant le plus bas et le coin inférieur droit le plus élevé).
Exemple
↑0
↓0
→0
↑0↑1←1↑2
↑0↑2→0→2↑0→2↑1↑2←1
↑2↑1←3→0←3↓0←0←2→3↑3↑4
Remarques
- Il peut y avoir différentes sorties correctes (il n'est pas nécessaire qu'elles soient nécessairement les mêmes que les cas de test ou les plus courts)
- Vous pouvez supposer que ce sera toujours un moyen de commander la matrice
- Les bords se connectent (comme pacman: v)
- Il n'y aura pas de matrice avec plus de 9 colonnes ou / et lignes
- Supposons que la matrice ne contient que des entiers uniques positifs non nuls
- Vous pouvez utiliser 4 valeurs distinctes autres que des nombres pour représenter les mouvements (dans ce cas, veuillez l'indiquer dans votre réponse)
- La colonne / ligne peut être indexée 0 ou 1
- Critères gagnants code-golf
Les cas de test supplémentaires sont toujours les bienvenus
←0←0
une solution valide pour le deuxième exemple où vous avez donné une solution en tant que→0
. Si c'est le cas, je pense que la moitié des options de déplacement ne seront probablement pas utilisées.Réponses:
JavaScript (ES6),
226219 octetsRecherche de force brute, en utilisant les mouvements vers la droite (
"R"
) et vers le bas ("D"
).Renvoie soit une chaîne décrivant les déplacements, soit un tableau vide si la matrice d'entrée est déjà triée. Les colonnes et les lignes de la sortie sont indexées sur 0.
Essayez-le en ligne!
Commenté
la source
Python 2 , 296 277 245Python 3 ,200194 octetsEssayez-le en ligne!
-19: les flèches unicode n'étaient pas nécessaires ...
-32: légèrement retravaillées, mais performances beaucoup plus lentes en moyenne.
-45: s'est inspiré de la réponse de @ Arnauld. Passé à Python 3 pour
f''
(-4 octets)-6:
range( )
→r_[: ]
,diff(ravel( ))
→ediff1d( )
Recherche de manière exhaustive les combinaisons de tous les
↓
mouvements possibles et→0
. Expiration du troisième test élémentaire.Étant donné que
→n
est équivalent àoù
r
et oùc
sont les nombres de lignes et de colonnes, ces mouvements sont suffisants pour trouver chaque solution.>v
correspondent respectivement à→↓
. (autres non définis)la source
Gelée , 35 octets
Essayez-le en ligne!
Programme complet. Les sorties se déplacent vers STDOUT en utilisant L pour gauche et R pour droite. Continue d'essayer des mouvements aléatoires jusqu'à ce que la matrice soit triée, donc pas très efficace en termes de vitesse ou de complexité algorithmique.
la source