Définissons un langage simple qui fonctionne sur une seule valeur 8 bits. Il définit trois opérations au niveau du bit (l'explication du code suppose une value
variable de 8 bits ):
!
Annule le bit le moins significatif (value ^= 1
)<
Enveloppement à gauche (value = value << 1 | value >> 7
)>
habillage à droite (value = value >> 1 | value << 7
)
Contribution:
Deux nombres à 8 bits, a et b . Comme ils sont 8 bits, vous pouvez également les prendre comme caractères.
Production:
Le chemin le plus court pour passer de a à b, avec les trois opérations définies ci-dessus. Vous pouvez renvoyer une chaîne ou un tableau de caractères, ou définir une valeur constante et distincte pour chaque opération et renvoyer un tableau de ceux-ci (oui, vous pouvez également dire des <
moyens >
et des >
moyens <
), mais veuillez expliquer votre format de sortie dans votre réponse.
S'il y a plusieurs manières, également longues, vous pouvez en sortir une partie ou la totalité.
Règles:
- Vous pouvez soumettre un programme ou une fonction
- Des échappatoires standard s'appliquent
- La soumission avec le moins d'octets dans chaque langue gagne (aucune réponse ne sera acceptée)
Les solutions sans forçage brutal (ou du moins pas seulement le forçage brutal) pourraient obtenir mon vote positif.
Cas de test:
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 '>>>>!>!'
Voici un programme pour en générer quelques autres.
la source
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
Gelée , 32 octets
Essayez-le en ligne!
< :
['ṙ', '1']
> :
['ṙ', '-']
! :
['¬', '8', '¦']
Remarque: Il s'agit d'une fonction, c'est pourquoi le pied de page est là.
Force brute. :(
la source
Python 2 , 111 octets
Essayez-le en ligne!
la source
exit
pour produire une sortie.JavaScript (ES6), 105 octets
Prend les 2 octets de la syntaxe de curry
(a)(b)
.Renvoie une chaîne avec:
0
=!
1
=>
2
=<
ou un tableau vide si a est égal à b .
Essayez-le en ligne! (avec les codes traduits en
!<>
)la source
C (gcc) ,
201199198196193 octetsa/2+a*128
au golf(a+2*a*128)/2
àa*257/2
.a*2+a/128
au golf(a*2*128+a)/128
à(257*a)/128
à257*a>>7
.deuxcinq octets grâce à plafond , jouant au golf le type de retour.C (gcc) , 193 octets
Essayez-le en ligne!
la source