Zdefiniujmy prosty język, który działa na pojedynczej 8-bitowej wartości. Definiuje trzy operacje bitowe (wyjaśnienie kodu zakłada value
zmienną 8-bitową ):
!
Neguj najmniej znaczący bit (value ^= 1
)<
Zawijanie w lewo Shift (value = value << 1 | value >> 7
)>
zawijanie w prawo-shift (value = value >> 1 | value << 7
)
Wejście:
Dwie liczby 8-bitowe, a i b . Ponieważ są 8-bitowe, możesz alternatywnie traktować je jako postacie.
Wynik:
Najkrótszy sposób przejścia z punktu A do punktu B, z trzema powyższymi operacjami. Możesz zwrócić ciąg znaków lub tablicę znaków lub zdefiniować stałe, odrębne wartości dla każdej operacji i zwrócić ich tablicę (tak, możesz również powiedzieć <
środki >
i >
środki <
), ale proszę wyjaśnij swój format wyjściowy w swojej odpowiedzi.
Jeśli istnieje wiele, równie długich dróg, możesz wypisać jeden lub wszystkie z nich.
Zasady:
- Możesz przesłać program lub funkcję
- Standardowe luki zastosowanie
- Zgłoszenie z najmniejszą liczbą bajtów w każdym języku wygrywa (odpowiedź nie zostanie zaakceptowana)
Rozwiązania bez brutalnego forsowania (a przynajmniej nie tylko brutalnego forsowania) mogą mnie pochwalić.
Przypadki testowe:
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 '>>>>!>!'
Oto program do wygenerowania jeszcze kilku.