Давайте визначимо просту мову, яка працює на одному 8-бітному значенні. Він визначає три бітові операції (пояснення коду передбачає 8-бітну value
змінну):
!
Негатуйте найменш значущий біт (value ^= 1
)<
Обертання лівої зміни (value = value << 1 | value >> 7
)>
загортання правої зміни (value = value >> 1 | value << 7
)
Вхід:
Два 8-розрядних числа, a і b . Оскільки вони є 8-бітовими, ви також можете прийняти їх як символи.
Вихід:
Найкоротший спосіб дістатися від a до b, з трьома операціями, визначеними вище. Ви можете повернути рядок або масив символів або визначити постійні, чіткі значення для кожної операції та повернути масив з цих (так, ви також можете сказати <
засоби >
та >
засоби <
), але, будь ласка, поясніть свій вихідний формат у своїй відповіді.
Якщо існує кілька, однаково довгих способів, ви можете вивести будь-який або всі з них.
Правила:
- Ви можете подати програму або функцію
- Застосовуються стандартні лазівки
- Подача з найменшою кількістю байтів на кожній мові виграє (відповідь не приймається)
Рішення без грубого насильства (або, принаймні, не тільки грубого насильства) можуть отримати мою нагоду.
Тестові приклади:
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 '>>>>!>!'
Ось програма для генерації ще декількох.