Definieren wir eine einfache Sprache, die mit einem einzelnen 8-Bit-Wert arbeitet. Es definiert drei bitweise Operationen (Code-Erklärung setzt eine 8-Bit- value
Variable voraus ):
!
Negiere das niedrigstwertige Bit (value ^= 1
)<
Linksverschiebung umbrechen (value = value << 1 | value >> 7
)>
Rechtsverschiebung umbrechen (value = value >> 1 | value << 7
)
Eingang:
Zwei 8-Bit-Zahlen, a und b . Da es sich um 8-Bit-Zeichen handelt, können Sie sie alternativ als Zeichen verwenden.
Ausgabe:
Der kürzeste Weg von a nach b, mit den drei oben definierten Operationen. Sie können eine Zeichenfolge oder ein Array von Zeichen zurückgeben oder für jede Operation einen konstanten, eindeutigen Wert definieren und ein Array von diesen zurückgeben (ja, Sie können auch <
Mittel >
und >
Mittel sagen <
), aber erläutern Sie Ihr Ausgabeformat in Ihrer Antwort.
Wenn es mehrere gleich lange Wege gibt, können Sie einen oder alle davon ausgeben.
Regeln:
- Sie können ein Programm oder eine Funktion einreichen
- Es gelten Standardlücken
- Die Einsendung mit den wenigsten Bytes in jeder Sprache gewinnt (keine Antwort wird akzeptiert)
Lösungen ohne Brute-Forcing (oder zumindest nicht nur Brute-Forcing) könnten meine Zustimmung finden.
Testfälle:
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 '>>>>!>!'
Hier ist ein Programm, um ein paar mehr zu generieren.