Uwaga: pierwsza połowa tego wyzwania pochodzi z poprzedniego wyzwania Martina Endera, Visualize Bit Weaving .
Ezoteryczny język programowania zło ma interesującą operację na wartościach bajtów, które nazywa „tkaniem”.
Zasadniczo jest to permutacja ośmiu bitów bajtu (nie ma znaczenia, od którego końca zaczniemy liczyć, ponieważ wzór jest symetryczny):
- Bit 0 jest przenoszony na bit 2
- Bit 1 jest przenoszony na bit 0
- Bit 2 jest przenoszony na bit 4
- Bit 3 jest przenoszony na bit 1
- Bit 4 jest przenoszony na bit 6
- Bit 5 jest przenoszony na bit 3
- Bit 6 jest przenoszony na bit 7
- Bit 7 jest przenoszony na bit 5
Dla wygody oto trzy inne przedstawienia permutacji. Jako cykl:
(02467531)
Jako mapowanie:
57361402 -> 76543210 -> 64725031
I jako lista par mapowania:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
Po 8
utkaniu bajt jest zasadniczo resetowany.
Na przykład, wyplatanie liczby 10011101
(która jest 157
w bazie 10) da 01110110
(która jest 118
w bazie 10).
Wejście
Dostępne są tylko 256
prawidłowe dane wejściowe, a mianowicie wszystkie liczby całkowite między 0
i 255
włącznie. Można to wziąć w dowolnej bazie, ale musi być spójna i musisz ją określić, jeśli wybrana baza nie jest dziesiątą.
Ty może nie zero-pad swoje wejścia.
Wynik
Powinieneś wyprowadzić wynik tkania bitów w dowolnej bazie, która również musi być spójna i określona, jeśli nie jest to baza dziesięć.
Państwo może zero-pad swoich wyjść.
Powiązane: Wizualizacja tkania bitów