Mari kita mendefinisikan bahasa sederhana yang beroperasi pada nilai 8-bit tunggal. Ini mendefinisikan tiga operasi bitwise (penjelasan kode mengasumsikan value
variabel 8-bit ):
!
Meniadakan bit paling signifikan (value ^= 1
)<
Membungkus shift kiri (value = value << 1 | value >> 7
)>
membungkus shift kanan (value = value >> 1 | value << 7
)
Memasukkan:
Dua angka 8-bit, a dan b . Karena mereka 8-bit, Anda dapat mengambilnya sebagai karakter.
Keluaran:
Cara terpendek untuk mendapatkan dari a ke b, dengan tiga operasi yang ditentukan di atas. Anda dapat mengembalikan string atau array karakter, atau menentukan nilai konstan dan berbeda untuk setiap operasi dan mengembalikan array dari itu (ya, Anda juga bisa mengatakan <
cara >
dan >
sarana <
), tetapi tolong jelaskan format output Anda dalam jawaban Anda.
Jika ada banyak, dengan cara yang sama panjangnya, Anda dapat menampilkan salah satu atau semuanya.
Aturan:
- Anda dapat mengirimkan program atau fungsi
- Celah standar berlaku
- Kiriman dengan byte paling sedikit di setiap bahasa menang (tidak ada jawaban akan diterima)
Solusi tanpa brute-forcing (atau setidaknya tidak hanya brute-forcing) mungkin mendapatkan upvote saya.
Kasus uji:
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 '>>>>!>!'
Berikut adalah program untuk menghasilkan beberapa lagi.
sumber
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
Jelly , 32 byte
Cobalah online!
< :
['ṙ', '1']
> :
['ṙ', '-']
! :
['¬', '8', '¦']
Catatan: Ini adalah fungsi, itu sebabnya catatan kaki ada di sana.
Paksaan. :(
sumber
Python 2 , 111 byte
Cobalah online!
sumber
exit
untuk menghasilkan output.JavaScript (ES6), 105 byte
Membawa 2 byte dalam sintaks currying
(a)(b)
.Mengembalikan string dengan:
0
=!
1
=>
2
=<
atau array kosong jika a sama dengan b .
Cobalah online! (dengan kode diterjemahkan kembali ke
!<>
)sumber
C (gcc) ,
201199198196193 bytea/2+a*128
untuk(a+2*a*128)/2
kea*257/2
.a*2+a/128
untuk(a*2*128+a)/128
untuk(257*a)/128
untuk257*a>>7
.dualima byte berkat ceilingcat , golf jenis kembali.C (gcc) , 193 byte
Cobalah online!
sumber