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.
quelle
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 Bytes
Probieren Sie es online!
< :
['ṙ', '1']
> :
['ṙ', '-']
! :
['¬', '8', '¦']
Hinweis: Dies ist eine Funktion, deshalb ist die Fußzeile dort.
Rohe Gewalt. :(
quelle
Python 2 , 111 Bytes
Probieren Sie es online!
quelle
exit
zur Ausgabe verwenden können.JavaScript (ES6), 105 Byte
Nimmt die 2 Bytes in der aktuellen Syntax
(a)(b)
.Liefert einen String mit:
0
=!
1
=>
2
=<
oder ein leeres Array, wenn a gleich b ist .
Probieren Sie es online! (mit rückübersetzten Codes
!<>
)quelle
C (gcc) ,
201199198196193 Bytesa/2+a*128
bis(a+2*a*128)/2
zua*257/2
.a*2+a/128
auf(a*2*128+a)/128
bis(257*a)/128
zu257*a>>7
.zweifünf Bytes dank ceilingcat , den Rückgabetyp Golf spielen.C (gcc) , 193 Bytes
Probieren Sie es online!
quelle