Eu gosto da curva de Hilbert .
Sua tarefa para esse desafio é capturar uma imagem (estritamente uma imagem quadrada, onde todos os lados têm uma potência de dois pixels de largura) e desvendá-la linha por linha em zigue-zague e percorrê-la novamente em uma curva pseudo-Hilbert .
Desenrolar
Para desvendar, você começará com o pixel no canto superior esquerdo e viajará para a direita até chegar à borda da imagem. Depois de atingir a borda da imagem, você irá para a próxima linha e começará a viajar para a esquerda até atingir a borda novamente. Você continuará desvendando linha por linha, alternando a direção a cada vez, para obter uma curva contínua. Deve parecer um jogo de cobra bem jogado
O resultado do desembaraço deve ser uma ordem de pixels que inclua todos os pixels exatamente uma vez
Reraveling
Depois de fazer o pedido dos pixels, você os reorganizará em uma nova tela de tamanho igual, seguindo o caminho de uma curva pseudo-Hilbert. Para uma 2**n
imagem quadrada de tamanho, você deve usar a enésima iteração da curva pseudo-hilbert. Cada pixel será colocado exatamente em um ponto na nova tela. Você deve desviar a imagem para que o ponto originalmente no canto superior esquerdo (o início da nossa curva de cobra) permaneça lá e aponte no canto inferior direito (o final de nossa curva de cobra) seja colocado no canto superior direito.
I / O
Seu programa ou função deve capturar uma imagem de restrições especificadas por métodos padrão e produzir outra imagem por métodos padrão.
Pontuação
Este é um programa de código-golfe com o menor número de bytes ganhos.
Exemplos
Entrada
Saída
Entrada
Saída
Entrada
Saída
Também recomendo testar uma imagem em branco ou em cores sólidas em branco para garantir que você não perca nenhum pixel.
Sinta-se à vontade para incluir seus próprios resultados em suas respostas!