Примечание: первая половина этой задачи происходит от предыдущей задачи Мартина Эндера « Визуализация битового переплетения» .
У эзотерического языка программирования зло есть интересная операция над байтовыми значениями, которую он называет «переплетением».
По сути, это перестановка восьми битов байта (не имеет значения, с какого конца мы начинаем считать, поскольку шаблон симметричен):
- Бит 0 перемещается в бит 2
- Бит 1 перемещается в бит 0
- Бит 2 перемещается в бит 4
- Бит 3 перемещается в бит 1
- Бит 4 перемещен в бит 6
- Бит 5 перемещен в бит 3
- Бит 6 перемещен в бит 7
- Бит 7 перемещен в бит 5
Для удобства приведем еще три представления перестановки. Как цикл:
(02467531)
Как отображение:
57361402 -> 76543210 -> 64725031
И как список пар сопоставления:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
После 8
переплетений байт по существу сбрасывается.
Например, соткать число 10011101
(которое находится 157
в базе 10) даст 01110110
(которое находится 118
в базе 10).
вход
Есть только 256
допустимые входные данные, а именно все целые числа между 0
и 255
включительно. Это может быть принято в любой базе, но она должна быть последовательной, и вы должны указать ее, если база, которую вы выбираете, не является базой десять.
Вы не можете дополнять нулями свои входные данные.
Выход
Вы должны вывести результат переплетения битов в любой базе, которая также должна быть последовательной и указана, если не в базовой десятке.
Вы можете обнулять свои выводы.
Связанный: Визуализация битового плетения