Lubię krzywą Hilberta .
Twoim zadaniem w tym wyzwaniu jest zrobienie zdjęcia (dokładnie kwadratowego obrazu, którego wszystkie boki mają moc dwóch pikseli szerokości) i rozplątanie go linia po linii w zygzakowaty sposób i wbicie go z powrotem w pseudo-krzywą Hilberta .
Rozplątywanie
Aby rozwikłać, zacznij od piksela w lewym górnym rogu i podróżuj w prawo, aż dojdziesz do krawędzi obrazu. Po uderzeniu w krawędź obrazu przejdziesz do następnego rzędu i zaczniesz jechać w lewo, aż ponownie dotkniesz krawędzi. Będziesz kontynuował rozplątywanie rząd po rzędzie za każdym razem zmieniając kierunek, aby uzyskać jedną ciągłą krzywą. Powinno to wyglądać jak dobrze zagrana gra w węża
Wynikiem rozwikłania powinna być kolejność pikseli, która obejmuje każdy piksel dokładnie raz
Reraveling
Po otrzymaniu zamówienia na piksele przestawisz je na nowe płótno o równej wielkości, podążając ścieżką pseudo-krzywej Hilberta. W przypadku 2**n
kwadratowego obrazu o wielkości należy użyć n-tej iteracji krzywej pseudo-Hilberta. Każdy piksel zostanie umieszczony w dokładnie jednym miejscu na nowym płótnie. Powinieneś odwrócić obraz, aby punkt pierwotnie w lewym górnym rogu (początek naszej krzywej węża) pozostał tam i punkt w prawym dolnym rogu (koniec naszej krzywej węża) został umieszczony w prawym górnym rogu.
I / O
Twój program lub funkcja powinna pobrać obraz określonych ograniczeń standardowymi metodami i wygenerować inny obraz standardowymi metodami.
Punktacja
Jest to program do gry w golfa z najmniejszą liczbą bajtów wygranych.
Przykłady
Wkład
Wydajność
Wkład
Wydajność
Wkład
Wydajność
Polecam również testowanie na pustym białym lub jednolitym kolorze obrazu, aby upewnić się, że nie brakuje żadnych pikseli.
Dołącz swoje wyniki do swoich odpowiedzi!