У цьому виклику ви збираєтесь написати перекладача простою мовою, яку я склав. Мова ґрунтується на одному акумуляторі A, який дорівнює рівно одному байту. На початку програми A = 0. Це мовні інструкції:
!
: Інверсія
Ця інструкція просто перевертає кожен шматочок акумулятора. Кожен нуль стає єдиним і кожен стає нулем. Просто!
>
: Зсув праворуч
Ця інструкція зміщується кожен біт на A в одному місці вправо. Кращий лівий біт стає нулем, а правий біт відкидається.
<
: Зсув вліво
Ця інструкція зміщується кожен біт на A в одному місці вліво. Крайній правий біт стає нулем, а лівий біт відкидається.
@
: Поміняйте Nybbles
Ця інструкція замінює чотири верхніх біта A на чотири нижніх біта. Наприклад, якщо A є, 01101010
а ви виконаєте @
, A буде 10100110
:
____________________
| |
0110 1010 1010 0110
|_______|
Ось і всі інструкції! Просте, правда?
Правила
- Ваша програма повинна прийняти введення один раз на початку. Це буде рядок коду. Це не інтерактивний перекладач! Ви можете прийняти введення лише один раз, і не потрібно повертати його до початку, як тільки цей рядок буде виконаний.
- Ваша програма повинна оцінити вказаний вклад. Кожен символ, який не згадується вище, ігнорується.
- Тоді ваша програма повинна роздрукувати остаточне значення акумулятора, у десятковій частині.
- Застосовуються звичайні правила для дійсних мов програмування.
- Стандартні лазівки заборонені.
- Це код-гольф , найменший виграш у кількості байтів.
Ось кілька невеликих програм для перевірки ваших заявок. Перед стрілкою є код, після нього очікуваний результат:
!
->255
!>>
->63
!<@
->239
!nop!&6*!
->255
Насолоджуйтесь!
! -> 255
що ми тут використовуватимемо 8 біт на байт? Питання не є явним.