Dans ce défi, vous allez écrire un interprète pour un langage simple que j'ai composé. La langue est basée sur un seul accumulateur A, qui a exactement une longueur d'un octet. Au début d'un programme, A = 0. Voici les instructions relatives aux langues:
!
: Inversion
Cette instruction inverse simplement chaque bit de l'accumulateur. Chaque zéro devient un et chaque devient un zéro. Simple!
>
: Décaler à droite
Cette instruction déplace chaque bit dans A un endroit vers la droite. Le bit le plus à gauche devient un zéro et le bit le plus à droite est supprimé.
<
: Décalage à gauche
Cette instruction décale chaque bit dans A un endroit à gauche. Le bit le plus à droite devient un zéro et le bit le plus à gauche est supprimé.
@
: Echangez des Nybbles
Cette instruction permute les quatre bits supérieurs de A avec les quatre bits inférieurs. Par exemple, si A est 01101010
et que vous exécutez @
, A sera 10100110
:
____________________
| |
0110 1010 1010 0110
|_______|
C'est toutes les instructions! Simple, non?
Règles
- Votre programme doit accepter une entrée au début. Ce sera une ligne de code. Ce n'est pas un interprète interactif! Vous ne pouvez accepter qu'une entrée et vous n'avez pas besoin de revenir au début une fois que cette ligne a été exécutée.
- Votre programme doit évaluer ladite entrée. Tout caractère non mentionné ci-dessus est ignoré.
- Votre programme devrait alors imprimer la valeur finale de l'accumulateur, en décimal.
- Les règles habituelles pour les langages de programmation valides s'appliquent.
- Les failles standard sont interdites.
- C'est le code-golf , le plus petit nombre d'octets gagne.
Voici quelques petits programmes pour tester vos soumissions. Avant la flèche est le code, après c'est le résultat attendu:
!
->255
!>>
->63
!<@
->239
!nop!&6*!
->255
Prendre plaisir!
! -> 255
qu'à partir de cela, nous devrions utiliser 8 bits par octet ici? La question n'est pas explicite.