単一の8ビット値で動作する単純な言語を定義しましょう。3つのビット演算を定義しています(コードの説明は8ビットvalue
変数を想定しています)。
!
最下位ビットを無効にします(value ^= 1
)<
左シフト(value = value << 1 | value >> 7
)の折り返し>
右シフトの折り返し(value = value >> 1 | value << 7
)
入力:
2つの8ビット数、aとb。8ビットなので、代わりに文字として使用することもできます。
出力:
上記の3つの操作を使用して、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 '>>>>!>!'