J'aime la courbe de Hilbert .
Votre tâche pour ce défi est de prendre une image (strictement une image carrée où tous les côtés ont une puissance de deux pixels de large) et de la démêler ligne par ligne en zigzaguant et de la défiler en arrière dans une courbe pseudo-Hilbert .
Démêler
Pour démêler, vous commencerez avec le pixel dans le coin supérieur gauche et voyagerez à droite jusqu'à ce que vous arriviez au bord de l'image. Une fois que vous avez touché le bord de l'image, vous descendez à la ligne suivante et commencez à voyager à gauche jusqu'à ce que vous frappiez à nouveau le bord. Vous continuerez à démêler ligne par ligne en changeant de direction à chaque fois afin d'obtenir une courbe continue. Cela devrait ressembler à un jeu de serpent bien joué
Le résultat du démêlage doit être un ordre de pixels qui inclut chaque pixel exactement une fois
Reraveling
Une fois que vous aurez commandé les pixels, vous les réorganiserez sur un nouveau canevas de taille égale suivant le chemin d'une pseudo-courbe de Hilbert. Pour une 2**n
image carrée de taille, vous devez utiliser la nième itération de la courbe pseudo-hilbert. Chaque pixel sera placé exactement à un endroit sur la nouvelle toile. Vous devez redéfinir l'image afin que le point initialement en haut à gauche (le début de notre courbe de serpent) y reste et que le point en bas à droite (la fin de notre courbe de serpent) soit placé en haut à droite.
E / S
Votre programme ou fonction doit prendre une image des contraintes spécifiées via des méthodes standard et produire une autre image via des méthodes standard.
Notation
Il s'agit d' un programme de golf de code avec le moins de victoires d'octets.
Exemples
Contribution
Sortie
Contribution
Sortie
Contribution
Sortie
Je recommande également de tester sur une image vierge en blanc ou en couleur unie pour vous assurer qu'il ne manque aucun pixel.
N'hésitez pas à inclure vos propres résultats dans vos réponses!