RoboCritters ( етимологія ) - це абсолютно нова езотерична мова програмування (не переймайтесь пошуком її, я її просто винайшов). Це варіант з Brainfuck (BF), кілька більш складним , ніж звичайні схеми заміщення оператора. Кожна програма в RoboCritters - це прямокутна сітка тексту, яка містить лише сім символів . []/\|, а також нові рядки для формування сітки.
Приклад програми RoboCritters:
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
Щоб перевести програму RoboCritters в BF, подивіться на кожен не новий рядок символів у сітці у звичайному порядку читання (зліва направо, потім зверху вниз), наприклад |\/||./|[]||[..][][] ||/\|[..][..][..] \/\/.
Якщо розділ 4 × 2 сітки розширення вправо і вниз від поточного символу точно збігається з одним з восьми роботів тварюк , перерахованих нижче, додайте відповідну команду BF ( ><+-.,[]) до (спочатку порожній) програмі BF.
Якщо секція сітки 4 × 2 не відповідає жодному з робочих факторів або не виходить за межі , до програми BF нічого не додається.
Joybot, командуйте
>:[..] \][/Спокій,
<командування:[..] /][\Squidbot,
+команда:[..] //\\Spiderbot,
-команда:[..] ||||Bunnybot,
.команда:[][] [..]Зубний робот,
,команда:[..] |/\|Foxbot,
[команда:|\/| [..]Batbot,
]команда:[..] \/\/
Отже, читаючи приклад програми
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
ми можемо побачити, що ми спочатку стикаємося з Foxbot (у колонці 1, рядок 1), потім зубним роботом (c1, r2), потім Bunnybot (c5, r2) і нарешті Batbot (c9, r3). Це відповідає програмі BF [,.].
Зауважте, що Foxbot і Toothbot перекриваються. Це навмисно;Робочі створення не інтерпретуються інакше, коли вони перетинаються .
Виклик
Напишіть найкоротшу можливу програму, яка бере програму RoboCritters і виводить її еквівалент BF. Вам не потрібно запускати BF або перевіряти, чи він дійсний, лише перекладіть код RoboCritters у BF-код.
Деталі
Усі вхідні програми RoboCritters будуть дійсними, тобто вони будуть точно прямокутним блоком тексту, що містить лише сім символів
. []/\|, а також нові рядки для його формування. Нові рядки можуть бути в будь-якому зручному загальному поданні . Можливо, ви можете припустити, що програми мають один нижній рядок.Ви повинні підтримувати програми RoboCritters розміром менше 4 × 2, включаючи порожню (або одну нову лінію) 0 × 0. Всі вони відповідають порожній програмі BF (порожній рядок).
Вихідна програма BF повинна бути однорядковою рядком, що містить лише вісім командних символів BF
><+-.,[]. За бажанням може бути один зворотний новий рядок.Візьміть введення будь-яким звичним способом (stdin / текстовий файл / командний рядок) та виведіть у stdout або найближчу альтернативу вашій мові.
Замість програми ви можете написати функцію, яка сприймає програму RoboCritters як рядок і друкує або повертає рядок програми BF.
Приклади
Введення: (варіант прикладу вище)
|\/|[][] [..][][] |/\|[..] \/\/Вихід:
[,.]Вхід: (тестує всі роботодавці)
[..][[[[[..]]. ]|\/| \][/[..]//\\[..][..] [..]/][\[][]|/\|[..] ||||/\| [..]| |\/\/Вихід:
>+[<,-.]Вхід:
[..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [][] [][] [..] [..] [..] [][] [..] [..] [][] [..] [..] [][] [..] [][] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [][] [..] [..] [..] [][] //\\ //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ /][\ /][\ /][\ /][\ |||| \/\/ \][/ //\\ \][/ //\\ \][/ |||| \][/ \][/ //\\ [..] /][\ \/\/ /][\ |||| \/\/ \][/ \][/ [..] \][/ |||| |||| |||| [..] //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] [..] //\\ //\\ //\\ [..] \][/ \][/ [..] /][\ |||| [..] /][\ [..] //\\ //\\ //\\ [..] |||| |||| |||| |||| |||| |||| [..] |||| |||| |||| |||| |||| |||| |||| |||| [..] \][/ \][/ //\\ [..] \][/ //\\ //\\ [..]Вихід: (програма BF Hello World )
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.Вхід: (немає роботодавців)
/\\\[]. ]..[..] \\//||\Вихід: (порожній рядок)
Оцінка балів
Виграє найкоротше подання в байтах. ( Зручний байтовий лічильник. ) Tiebreaker - це найвище оцінений пост.