Neste desafio, você escreverá um intérprete para um idioma simples que eu inventei. O idioma é baseado em um único acumulador A, com exatamente um byte de comprimento. No início de um programa, A = 0. Estas são as instruções de idiomas:
!
: Inversão
Esta instrução simplesmente inverte todos os bits do acumulador. Todo zero se torna um e cada um se torna um zero. Simples!
>
: Deslocar para a direita
Esta instrução muda todos os bits em um lugar para a direita. O bit mais à esquerda se torna zero e o bit mais à direita é descartado.
<
: Shift para a esquerda
Esta instrução muda cada bit em um lugar para a esquerda. O bit mais à direita se torna zero e o bit mais à esquerda é descartado.
@
: Trocar Nybbles
Esta instrução troca os quatro bits superiores de A pelos quatro bits inferiores. Por exemplo, se A é 01101010
e você executa @
, A será 10100110
:
____________________
| |
0110 1010 1010 0110
|_______|
Essas são todas as instruções! Simples, certo?
Regras
- Seu programa deve aceitar entrada uma vez no início. Esta será uma linha de código. Este não é um intérprete interativo! Você só pode aceitar entrada uma vez e não precisa voltar ao início depois que a linha for executada.
- Seu programa deve avaliar a entrada mencionada. Todo personagem que não é mencionado acima é ignorado.
- Seu programa deve imprimir o valor final do acumulador, em decimal.
- Aplicam-se regras usuais para linguagens de programação válidas.
- As brechas padrão não são permitidas.
- Isso é código-golfe , a menor contagem de bytes ganha.
Aqui estão alguns pequenos programas para testar seus envios. Antes da seta estar o código, depois do resultado esperado:
!
->255
!>>
->63
!<@
->239
!nop!&6*!
->255
Apreciar!
! -> 255
que vamos usar 8 bits por byte aqui? A pergunta não é explícita.