W tym wyzwaniu napiszesz tłumacza prostego języka, który wymyśliłem. Język oparty jest na pojedynczym akumulatorze A, który ma dokładnie jeden bajt długości. Na początku programu A = 0. Oto instrukcje dotyczące języków:
!: Inwersja
Ta instrukcja po prostu odwraca każdy kawałek akumulatora. Każde zero staje się jednością, a każdy staje się zerem. Prosty!
>: Shift Right
Ta instrukcja przesuwa się co chwilę w jednym miejscu w prawo. Najbardziej lewy bit staje się zerem, a skrajny prawy bit jest odrzucany.
<: Przesuń w lewo
Ta instrukcja przesuwa się co chwilę w jednym miejscu w lewo. Najbardziej wysunięty w prawo bit staje się zerem, a najbardziej wysunięty w lewo bit jest odrzucany.
@: Zamień Nybbles
Ta instrukcja zamienia cztery górne bity A na cztery dolne bity. Na przykład, jeśli A jest 01101010i wykonasz @, A będzie 10100110:
____________________
| |
0110 1010 1010 0110
|_______|
To wszystkie instrukcje! Proste, prawda?
Zasady
- Twój program musi zaakceptować wejście raz na początku. To będzie linia kodu. To nie jest interaktywny tłumacz! Możesz zaakceptować dane wejściowe tylko raz i nie musisz zapętlać z powrotem do początku po wykonaniu tej linii.
- Twój program musi ocenić wspomniane dane wejściowe. Każda postać, która nie jest wymieniona powyżej, jest ignorowana.
- Twój program powinien następnie wydrukować ostateczną wartość akumulatora w systemie dziesiętnym.
- Obowiązują zwykłe zasady dotyczące prawidłowych języków programowania.
- Standardowe luki są niedozwolone.
- To jest golf golfowy , wygrywa najmniejsza liczba bajtów.
Oto kilka małych programów do testowania swoich zgłoszeń. Przed strzałką jest kod, po nim oczekiwany wynik:
!->255!>>->63!<@->239!nop!&6*!->255
Cieszyć się!



! -> 255, że wykorzystamy tutaj 8 bitów na bajt? Pytanie nie jest jednoznaczne.