Mi piace la curva di Hilbert .
Il tuo compito per questa sfida è quello di prendere un'immagine (rigorosamente un'immagine quadrata in cui tutti i lati hanno una potenza di due pixel di larghezza) e svelarla riga per riga in modo a zig-zag e ravvivarla in una curva pseudo-Hilbert .
Unraveling
Per svelare inizierai con il pixel nell'angolo in alto a sinistra e viaggerai a destra fino ad arrivare al bordo dell'immagine. Dopo aver colpito il bordo dell'immagine, passerai alla riga successiva e inizierai a viaggiare a sinistra fino a quando non colpirai di nuovo il bordo. Continuerai a svelare riga per riga cambiando la direzione ogni volta in modo da ottenere una curva continua. Dovrebbe apparire come un gioco di serpenti ben giocato
Il risultato del dipanarsi dovrebbe essere un ordine di pixel che include ogni pixel esattamente una volta
Reraveling
Una volta che hai un ordine per i pixel, li riorganizzerai su una nuova tela di pari dimensioni seguendo il percorso di una curva pseudo-Hilbert. Per 2**n
un'immagine quadrata di dimensioni dovresti usare l'ennesima iterazione della curva pseudo-hilbert. Ogni pixel verrà posizionato esattamente in un punto sulla nuova tela. Dovresti ripetere il riavvio dell'immagine in modo che il punto originariamente in alto a sinistra (l'inizio della nostra curva del serpente) rimanga lì e il punto in basso a destra (la fine della nostra curva del serpente) sia posizionato in alto a destra.
I / O
Il programma o la funzione dovrebbe includere un'immagine dei vincoli specificati tramite metodi standard e produrre un'altra immagine tramite metodi standard.
punteggio
Questo è un programma di code-golf con il minor numero di byte vincenti.
Esempi
Ingresso
Produzione
Ingresso
Produzione
Ingresso
Produzione
Raccomando anche di provare su un'immagine in bianco bianca o a tinta unita per assicurarsi che non manchino pixel.
Sentiti libero di includere i tuoi risultati nelle risposte!