Ich mag die Hilbert-Kurve .
Ihre Aufgabe für diese Herausforderung ist es, ein Bild (ausschließlich ein quadratisches Bild, bei dem alle Seiten eine Stärke von zwei Pixeln haben) aufzunehmen, zickzackförmig zeilenweise zu entwirren und es in einer Pseudo-Hilbert-Kurve wieder aufzurollen .
Auflösen
Zum Auflösen beginnen Sie mit dem Pixel in der oberen linken Ecke und bewegen sich nach rechts, bis Sie am Bildrand ankommen. Sobald Sie den Bildrand erreicht haben, springen Sie in die nächste Reihe und bewegen sich nach links, bis Sie den Bildrand erneut erreichen. Sie werden fortfahren, Reihe für Reihe zu entwirren, indem Sie die Richtung jedes Mal wechseln, so dass Sie eine kontinuierliche Kurve erhalten. Dies sollte wie ein gut gespieltes Schlangenspiel aussehen
Das Ergebnis des Auflösens sollte eine Pixelreihenfolge sein, die jedes Pixel genau einmal enthält
Umschiffen
Sobald Sie eine Reihenfolge für die Pixel festgelegt haben, ordnen Sie sie auf einer neuen Leinwand gleicher Größe neu an, die dem Pfad einer Pseudo-Hilbert-Kurve folgt. Für ein 2**n
quadratisches Bild sollten Sie die n-te Iteration der Pseudohilbert-Kurve verwenden. Jedes Pixel wird genau an einer Stelle auf der neuen Leinwand platziert. Sie sollten das Bild neu berechnen, sodass der Punkt oben links (der Anfang unserer Schlangenkurve) dort bleibt und der Punkt unten rechts (das Ende unserer Schlangenkurve) oben rechts platziert wird.
I / O
Ihr Programm oder Ihre Funktion sollte ein Abbild bestimmter Einschränkungen über Standardmethoden aufnehmen und ein anderes Abbild über Standardmethoden ausgeben.
Wertung
Dies ist ein Code-Golf- Programm mit den wenigsten Gewinnen.
Beispiele
Eingang
Ausgabe
Eingang
Ausgabe
Eingang
Ausgabe
Ich empfehle auch, ein leeres weißes oder einfarbiges Bild zu testen, um sicherzustellen, dass keine Pixel fehlen.
Fühlen Sie sich frei, Ihre eigenen Ergebnisse in Ihre Antworten einzubeziehen!