Давайте определим простой язык, который работает с одним 8-битным значением. Он определяет три побитовые операции (объяснение кода предполагает 8-битную value
переменную):
!
Отрицательный младший бит (value ^= 1
)<
Заворачивание влево-сдвиг (value = value << 1 | value >> 7
)>
перенос правой стрелки (value = value >> 1 | value << 7
)
Входные данные:
Два 8-битных числа, а и б . Поскольку они 8-битные, вы можете принять их за символы.
Выход:
Кратчайший способ добраться от а до б с помощью трех операций, определенных выше. Вы можете вернуть строку или массив символов или определить постоянные, отдельные значения для каждой операции и вернуть массив из них (да, вы могли бы также сказать, что <
означает >
и >
означает <
), но, пожалуйста, объясните свой выходной формат в своем ответе.
Если есть несколько одинаковых длинных путей, вы можете вывести любой или все из них.
Правила:
- Вы можете отправить программу или функцию
- Применяются стандартные лазейки
- Представление с наименьшим количеством байтов на каждом языке выигрывает (ответ не будет принят)
Решения без грубого принуждения (или, по крайней мере, не только грубого принуждения) могут получить мое одобрение.
Тестовые случаи:
12, 13 => '!'
1, 2 => '<'
254, 253 => '<'
5, 5 => ''
98, 226 -> '<!>'
64, 154 -> '!>!>>>!>'
177, 164 -> '!>>!>>>!'
109, 11 -> '>>!>!>>'
126, 92 -> '!>!>!>!<' or '!>!>>!<!'
26, 85 -> '<!<<!<!<' or '<!<<!<!>' or '<!<<<!>!'
123, 241 -> '!>!<<!' or '>!<!<!'
236, 50 -> '<<!<!>' or '<<<!>!'
59, 246 -> '<<!>'
132, 95 -> '!<<!<!<!'
74, 53 -> '!>>>!>!'
171, 127 -> '<<!<<!<'
109, 141 -> '!>>>'
185, 92 -> '!>'
166, 201 -> '!<!>>>' or '<!>!>>'
77, 155 -> '<!'
124, 181 -> '!<<<<!>>' or '!>>>>!>>'
108, 85 -> '!<<<!<!<!<' or '!<<<!<!<!>' or '!<<<!<<!>!' or '!>>>!>!>!<' or '!>>>!>!>!>' or '!>>>!>>!<!'
185, 144 -> '<!<<!<!'
70, 179 -> '<<<!<!>' or '<<<<!>!' or '>>>>!>!'
Вот программа для генерации еще нескольких.