Враховуючи будь-яку дійсну програму Glypho , виведіть її "читабельний для людини" аналог.
Glypho - цікава ідея esolang:
Посилання на інструкції наведено тут. Для кожної інструкції символи abcd представляють символи, що складають кожну інструкцію. a відноситься до першого унікального символу, b посилається на другий унікальний символ тощо.
aaaa ..... n NOP - no operation; do nothing aaab ..... i Input - push input onto top of stack aaba ..... > Rot - pops top stack element and pushes to bottom of stack aabb ..... \ Swap - swaps top two stack elements aabc ..... 1 Push - pushes a 1 onto the top of stack (creates new element) abaa ..... < RRot - pops bottom element and pushes to top of stack abab ..... d Dup - Duplicates top stack element abac ..... + Add - pops top two elements and pushes their sum abba ..... [ L-brace - skip to matching ] if top stack element is 0 abbb ..... o Output - pops and outputs top stack element abbc ..... * Multiply - pops top two elements and pushes their product abca ..... e Execute - Pops four elements and interprets them as an instruction abcb ..... - Negate - pops value from stack, pushes -(value) abcc ..... ! Pop - pops and discards top stack element abcd ..... ] R-brace - skip back to matching [
(кредит: Брайан Томпсон aka Wildhalcyon)
Так, наприклад, PPCG
представляла б інструкція Push -PPCG
відповідає шаблону aabc
, де a
представляє P
, b
представляє C
і c
представляє G
.
Вхід буде представляти собою єдиний рядок, що складається тільки з друкованих символів ASCII. Завжди матиме довжину, що ділиться на чотири (duh).
Вихід - це кожна група з чотирьох символів у рядку введення, замінена якою інструкцією. Скористайтеся однобуквенними назвами інструкцій (ті, що знаходяться відразу після п’яти крапок у цитованій вище таблиці).
Оскільки це код-гольф , найкоротший код у байтах виграє.
Тестові приклади:
In Out
------------------------------------------------
Programming Puzzles & Code Golof ]!]!]]]+
nananananananana batman! dddd]]
;;;;;;;:;;:;;;:: ni>\
llamas sleep 1-*
8488133190003453 <[oe
<empty string> <empty string>