In questa sfida scriverai un interprete per una lingua semplice che ho inventato. La lingua si basa su un singolo accumulatore A, che è esattamente lungo un byte. All'inizio di un programma, A = 0. Queste sono le istruzioni sulle lingue:
!
: Inversione
Questa istruzione inverte semplicemente ogni bit dell'accumulatore. Ogni zero diventa uno e ognuno diventa uno zero. Semplice!
>
: Maiusc a destra
Questa istruzione sposta ogni bit in un posto a destra. Il bit più a sinistra diventa zero e il bit più a destra viene scartato.
<
: Maiusc a sinistra
Questa istruzione si sposta ogni bit in un posto a sinistra. Il bit più a destra diventa zero e il bit più a sinistra viene scartato.
@
: Scambia Nybbles
Questa istruzione scambia i primi quattro bit di A con i quattro bit inferiori. Ad esempio, se A è 01101010
ed esegui @
, A sarà 10100110
:
____________________
| |
0110 1010 1010 0110
|_______|
Queste sono tutte le istruzioni! Semplice vero?
Regole
- Il programma deve accettare input una volta all'inizio. Questa sarà una riga di codice. Questo non è un interprete interattivo! È possibile accettare l'input solo una volta e non è necessario ritornare all'inizio una volta eseguita quella riga.
- Il tuo programma deve valutare detto input. Ogni personaggio che non è menzionato sopra viene ignorato.
- Il programma dovrebbe quindi stampare il valore finale dell'accumulatore, in decimale.
- Si applicano le regole usuali per linguaggi di programmazione validi.
- Le scappatoie standard non sono ammesse.
- Questo è code-golf , vince il conteggio dei byte più piccolo.
Ecco alcuni piccoli programmi per testare i tuoi invii. Prima che la freccia sia il codice, dopo che è il risultato previsto:
!
->255
!>>
->63
!<@
->239
!nop!&6*!
->255
Godere!
! -> 255
che dovremo usare 8 bit per byte? La domanda non è esplicita.