В этой задаче вам нужно написать несложный генератор кода для двухмерного языка программирования, производного от Brainfuck.
Код на этом языке представляет собой прямоугольник, состоящий из символов '.' и 'X'. Код преобразуется в программу на Brainfuck следующим образом: символы читаются в книжном порядке (сверху вниз, слева направо), и каждому символу 'X' ставится в соответствие команда Brainfuck. Команда определяется левым, верхним и правым соседями символа 'X' в соответствии со следующей таблицей:
Вам дана строка. Выведите программу на этом языке, которая при выполнении напечатает эту строку.
Вы можете скачать исходный код используемого интерпретатора по ссылке https://cfassets.m27.workers.dev/rounds/952/puzzling-interpreter.cpp (используйте C++11 чтобы скомпилировать код). Обратите внимание на несколько аспектов реализации:
- Первый шаг интерпретации кода - преобразование в программу на Brainfuck, которая затем выполняется.
- Код должен быть прямоугольным, т.е. все строки должны быть одинаковой длины. В коде может быть не более 10,000 строк и 10,000 столбцов, и не более 500,000 символов 'X'.
- Код имеет топологию тора, т.е. для символов в первой строке соседи сверху - символы на последней строке.
- Память интерпретатора Brainfuck состоит из 30000 ячеек памяти, хранящих целые числа от 0 до 255 с арифметикой по модулю 256.
- Ввод с консоли (команда ,) разрешен в программе на Brainfuck, но игнорируется при выполнении.
Выходные данные
Выведите программу на описанном языке, которая при выполнении выведет на печать заданное сообщение.
Примечание
Пример соответствует следующей программе на Brainfuck:
-
>+<
>+++<
>+++++<
>+++++++<
>+++++++++<
>+++++++++++<
< >
.
.
.
Треугольный блок вычитает единицу из первой ячейки памяти и устанавливает значение второй ячейки равным 36 - аски-коду символа '$'. Следующая после треугольного блока строка передвигает указатель памяти на вторую ячейку, а три последние строки выводят символ '$' три раза.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
$$$
|
.......X.......
......XXX......
.....XXXXX.....
....XXXXXXX....
...XXXXXXXXX...
..XXXXXXXXXXX..
.XXXXXXXXXXXXX.
...............
X.............X
X..............
X..............
X..............
|