Vamos definir uma linguagem simples que opere em um único valor de 8 bits. Ele define três operações bit a bit (a explicação do código assume uma value
variável de 8 bits ):
!
Negue o bit menos significativo (value ^= 1
)<
Empacotando o deslocamento para a esquerda (value = value << 1 | value >> 7
)>
quebra automática à direita (value = value >> 1 | value << 7
)
Entrada:
Dois números de 8 bits, a e b . Como são de 8 bits, você pode levá-los como caracteres.
Resultado:
A maneira mais curta de ir de a para b, com as três operações definidas acima. Você pode retornar uma string ou uma matriz de caracteres, ou definir valores constantes e distintos para cada operação e retornar uma matriz desses (sim, você também pode dizer <
meios >
e >
meios <
), mas por favor, explique seu formato de saída na sua resposta.
Se houver várias maneiras igualmente longas, você poderá gerar uma ou todas elas.
Regras:
- Você pode enviar um programa ou função
- Aplicam-se brechas padrão
- A submissão com menos bytes em cada idioma vence (nenhuma resposta será aceita)
Soluções sem força bruta (ou pelo menos não apenas força bruta) podem receber meu voto positivo.
Casos de teste:
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 '>>>>!>!'
Aqui está um programa para gerar mais alguns.
fonte
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
Gelatina , 32 bytes
Experimente online!
< :
['ṙ', '1']
> :
['ṙ', '-']
! :
['¬', '8', '¦']
Nota: Essa é uma função, é por isso que o rodapé está lá.
Força bruta. :(
fonte
Python 2 , 111 bytes
Experimente online!
fonte
exit
para produzir saída.JavaScript (ES6), 105 bytes
Leva os 2 bytes na sintaxe de currying
(a)(b)
.Retorna uma string com:
0
=!
1
=>
2
=<
ou uma matriz vazia se a for igual a b .
Experimente online! (com códigos traduzidos de volta para
!<>
)fonte
C (GCC) ,
201199198196193 bytesa/2+a*128
para(a+2*a*128)/2
aa*257/2
.a*2+a/128
para(a*2*128+a)/128
a(257*a)/128
para257*a>>7
.doiscinco bytes graças ao ceilingcat , jogando o tipo de retorno.C (gcc) , 193 bytes
Experimente online!
fonte