Давайте определим простой язык, который работает с одним 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 '>>>>!>!'
Вот программа для генерации еще нескольких.
источник
f=(a,b,[c,d,...e]=[a,''])=>c-b?f(a,b,[...e,c^1,d+1,c/2|c%2<<7,d+2,c%128*2|c>>7,d+0]):d
Желе , 32 байта
Попробуйте онлайн!
< :
['ṙ', '1']
> :
['ṙ', '-']
! :
['¬', '8', '¦']
Примечание: это функция, поэтому нижний колонтитул есть.
Грубая сила. :(
источник
Python 2 , 111 байт
Попробуйте онлайн!
источник
exit
для вывода.JavaScript (ES6), 105 байт
Занимает 2 байта в синтаксисе каррирования
(a)(b)
.Возвращает строку с:
0
знак равно!
1
знак равно>
2
знак равно<
или пустой массив, если a равно b .
Попробуйте онлайн! (с кодами, переведенными обратно
!<>
)источник
C (gcc) ,
201199198196193 байтаa/2+a*128
в гольф на(a+2*a*128)/2
наa*257/2
.a*2+a/128
в гольф,(a*2*128+a)/128
чтобы,(257*a)/128
чтобы257*a>>7
.двапятибайта благодаря floorcat , играющей в гольф возвратного типа.C (gcc) , 193 байта
Попробуйте онлайн!
источник