In dieser Herausforderung werden Sie einen Dolmetscher für eine einfache Sprache schreiben, die ich erfunden habe. Die Sprache basiert auf einem einzelnen Akkumulator A, der genau ein Byte lang ist. Zu Beginn eines Programms ist A = 0. Dies sind die Sprachanweisungen:
!
: Inversion
Dieser Befehl invertiert einfach jedes Bit des Akkumulators. Jede Null wird zu einer Eins und jede wird zu einer Null. Einfach!
>
: Nach rechts verschieben
Diese Anweisung verschiebt jedes Bit in A um eine Stelle nach rechts. Das Bit ganz links wird zu einer Null und das Bit ganz rechts wird verworfen.
<
: Nach links verschieben
Dieser Befehl verschiebt jedes Bit in A um eine Stelle nach links. Das Bit ganz rechts wird zu einer Null und das Bit ganz links wird verworfen.
@
: Swap Nybbles
Dieser Befehl tauscht die oberen vier Bits von A mit den unteren vier Bits aus. Wenn beispielsweise A ist 01101010
und Sie ausführen @
, ist A 10100110
:
____________________
| |
0110 1010 1010 0110
|_______|
Das sind alle Anweisungen! Einfach, richtig?
Regeln
- Ihr Programm muss zu Beginn einmalig Eingaben akzeptieren . Dies wird eine Codezeile sein. Dies ist kein interaktiver Interpreter! Sie können Eingaben nur einmal annehmen und müssen nach Ausführung dieser Zeile nicht zum Anfang zurückkehren.
- Ihr Programm muss diese Eingabe auswerten. Jedes oben nicht erwähnte Zeichen wird ignoriert.
- Ihr Programm sollte dann den Endwert des Akkus dezimal ausgeben.
- Es gelten die üblichen Regeln für gültige Programmiersprachen.
- Standardlücken sind nicht zulässig.
- Dies ist Code-Golf , die kleinste Anzahl von Bytes gewinnt.
Hier sind einige kleine Programme, mit denen Sie Ihre Beiträge testen können. Vor dem Pfeil steht der Code, danach das erwartete Ergebnis:
!
->255
!>>
->63
!<@
->239
!nop!&6*!
->255
Genießen!
! -> 255
dass wir hier 8 Bits pro Byte verwenden? Die Frage ist nicht explizit.