En este desafío, vas a escribir un intérprete para un lenguaje simple que he inventado. El lenguaje se basa en un único acumulador A, que tiene exactamente un byte de longitud. Al comienzo de un programa, A = 0. Estas son las instrucciones de idiomas:
!
: Inversión
Esta instrucción simplemente invierte cada bit del acumulador. Cada cero se convierte en uno y cada uno se convierte en cero. ¡Simple!
>
: Desplazar a la derecha
Esta instrucción cambia cada bit en un lugar a la derecha. El bit más a la izquierda se convierte en un cero y el bit más a la derecha se descarta.
<
: Desplazar a la izquierda
Esta instrucción cambia cada bit en A un lugar a la izquierda. El bit más a la derecha se convierte en cero y el bit más a la izquierda se descarta.
@
: Intercambiar Nybbles
Esta instrucción intercambia los cuatro bits superiores de A con los cuatro bits inferiores. Por ejemplo, si A es 01101010
y ejecutas @
, A será 10100110
:
____________________
| |
0110 1010 1010 0110
|_______|
¡Esas son todas las instrucciones! Simple, verdad?
Reglas
- Su programa debe aceptar la entrada una vez al principio. Esta será una línea de código. ¡Este no es un intérprete interactivo! Solo puede aceptar la entrada una vez y no tiene que volver al inicio una vez que se ha ejecutado esa línea.
- Su programa debe evaluar dicha entrada. Todos los personajes que no se mencionan anteriormente se ignoran.
- Su programa debería imprimir el valor final del acumulador, en decimal.
- Se aplican las reglas habituales para lenguajes de programación válidos.
- Las lagunas estándar no están permitidas.
- Este es el código de golf , el recuento de bytes más pequeño gana.
Aquí hay algunos pequeños programas para probar sus envíos. Antes de que la flecha sea el código, después es el resultado esperado:
!
->255
!>>
->63
!<@
->239
!nop!&6*!
->255
¡Disfrutar!
! -> 255
que debemos usar 8 bits por byte aquí? La pregunta no es explícita.