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.
źródło
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
Galaretka , 32 bajty
Wypróbuj online!
< :
['ṙ', '1']
> :
['ṙ', '-']
! :
['¬', '8', '¦']
Uwaga: jest to funkcja, dlatego jest tam stopka.
Brutalna siła. :(
źródło
Python 2 , 111 bajtów
Wypróbuj online!
źródło
exit
do uzyskania wyników.JavaScript (ES6), 105 bajtów
Zajmuje 2 bajty w składni curry
(a)(b)
.Zwraca ciąg z:
0
=!
1
=>
2
=<
lub pusta tablica, jeśli a jest równe b .
Wypróbuj online! (z kodami przetłumaczonymi z powrotem na
!<>
)źródło
C (gcc) ,
201199198196193 bajtówa/2+a*128
w golfa(a+2*a*128)/2
doa*257/2
.a*2+a/128
, aby(a*2*128+a)/128
do(257*a)/128
celu257*a>>7
.dwapięć bajtów dzięki pułapowi cat , grając w golfa typu powrotu.C (gcc) , 193 bajtów
Wypróbuj online!
źródło