Для этой задачи художественное стеганое одеяло ASCII будет представлять собой блок текста шириной 24 символа и высотой 18 строк, содержащий символы =-<>/\
в виде лоскутного рисунка, который является симметричным по горизонтали и вертикали.
Пример стеганого одеяла:
========================
------------------------
//\\//\\\//\/\\///\\//\\
<<><<>>>>><<>><<<<<>><>>
/\\/\\\\/\/\/\/\////\//\
------------------------
/\/////\\///\\\//\\\\\/\
\///\/\/\\\\////\/\/\\\/
\///\/\/\\\\////\/\/\\\/
/\\\/\/\////\\\\/\/\///\
/\\\/\/\////\\\\/\/\///\
\/\\\\\//\\\///\\/////\/
------------------------
\//\////\/\/\/\/\\\\/\\/
<<><<>>>>><<>><<<<<>><>>
\\//\\///\\/\//\\\//\\//
------------------------
========================
Все одеяла имеют одинаковую форму:
- Они всегда 24 на 18.
- Верхняя строка (строка 1) и нижняя строка (строка 18)
=
полностью пересекаются. - Линии 2, 6, 13 и 17
-
полностью пересекаются. - Строки 4 и 15 представляют собой одинаковую случайную горизонтально симметричную диаграмму
<
и>
. - Все другие линии (3, 5, 7, 8, 9, 10, 11, 12, 14, 16) заполняются
/
и\
в совершенно случайным образом так, чтобы вся квилт остается горизонтально и вертикально симметричны .
Обратите внимание, что при складывании стеганого одеяла ровно пополам, по вертикали или по горизонтали, формы символов точно совпадают. Не путайте это с персонажами, совпадающими. например, строка 3 и строка 16 не идентичны, они являются вертикальными зеркальными изображениями.
Вызов
Напишите программу или функцию, которая будет печатать или возвращать случайное художественное одеяло ASCII.
Из-за большого количества жестко закодированных линий и симметрии единственная реальная случайность возникает из первых 12 символов в строках 3, 4, 5, 7, 8, 9:
- Первые 12 символов в строке 4 должны иметь длину 12 символов любой строки
<
и>
. - Первые 12 символов в строках 3, 5, 7, 8, 9 должны иметь длину строки символов 12
/
и\
(независимо друг от друга). - Эти случайные строки затем зеркально отражаются для создания всего стеганого одеяла.
Самый короткий ответ в байтах побеждает. Tiebreaker - более ранний пост.
Вы можете использовать генераторы псевдослучайных чисел. (Нет, вам не нужно доказывать, что все строки из 12 символов <>
или /\
могут быть сгенерированы с помощью PRNG вашего языка.)
Вывод может дополнительно содержать завершающий символ новой строки, но не должен содержать пробелов или других символов, кроме того, что необходимо для стеганого одеяла.