У эзотерического языка программирования зло есть интересная операция над байтовыми значениями, которую он называет «переплетением». По сути, это перестановка восьми битов байта (не имеет значения, с какого конца мы начинаем считать, поскольку шаблон симметричен):
- Бит 0 перемещается в бит 2
- Бит 1 перемещается в бит 0
- Бит 2 перемещен в бит 4
- Бит 3 перемещается в бит 1
- Бит 4 перемещен в бит 6
- Бит 5 перемещен в бит 3
- Бит 6 перемещен в бит 7
- Бит 7 перемещен в бит 5
Для удобства приведем два других представления перестановки. Как цикл:
(02467531)
И как список пар сопоставления:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
Ваша задача состоит в том, чтобы визуализировать эту перестановку, используя окно рисования персонажей ─
, │
, ┌
, ┐
, └
, ┘
, ┼
(Unicode кодовых точек: U + 2500, U + 2502, U + 250C, U + 2510, U + 2514, U + 2518, U + 253c). Эта визуализация должна удовлетворять следующим ограничениям:
Первая и последняя строка точно:
0 1 2 3 4 5 6 7
Между ними вы можете использовать столько строк, сколько вы хотите, до 15 символов в каждой, чтобы они соответствовали символам рисования в рамке (вам понадобится как минимум 4 строки). Строки должны начинаться вертикально под одной из цифр в первой строке и заканчиваться вертикально над соответствующей цифрой в последней строке. Восемь линий должны быть соединены и могут пересекаться только через ┼
(который всегда является пересечением, а не двумя линиями поворота, которые касаются друг друга). Точные пути линий зависят от вас (и поиск особенно подходящего для игры макета является ядром этой задачи). Один действительный вывод будет:
0 1 2 3 4 5 6 7
│ │ └─┼┐│ │ └┐│
└─┼─┐ ││└─┼─┐││
┌─┘ │ ││ │ │││
│ ┌─┼─┘│ │ │││
│ │ │ ┌┼──┘ │││
│ │ │ │└┐ ┌─┼┼┘
│ │ │ │ │ │ │└┐
0 1 2 3 4 5 6 7
Однако любая другая раскладка, которая правильно соединяет правильные цифры, тоже подойдет. Пожалуйста, покажите выбранный результат в вашем ответе.
Вы можете написать программу или функцию и не будете принимать никаких данных. Выведите диаграмму либо в STDOUT (или ближайшую альтернативу), либо как возвращаемое функцией значение в виде строки или списка строк (каждая из которых представляет одну строку).
Применяются стандартные правила игры в гольф , поэтому выигрывает самый короткий код (в байтах).
01234567
качестве входных данных , а затем подключение , что к 01234567
? Так что вам самим приходится выяснять ссылки? Это было бы значительно более сложной задачей, особенно для игры в гольф.