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 01101010
i 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.