W przypadku tego wyzwania kołdra artystyczna ASCII będzie blokiem tekstu o szerokości 24 znaków i wysokości 18 linii, zawierającym znaki =-<>/\
w podobny do kołdry wzór, który jest symetryczny poziomo i pionowo.
Przykładowa kołdra:
========================
------------------------
//\\//\\\//\/\\///\\//\\
<<><<>>>>><<>><<<<<>><>>
/\\/\\\\/\/\/\/\////\//\
------------------------
/\/////\\///\\\//\\\\\/\
\///\/\/\\\\////\/\/\\\/
\///\/\/\\\\////\/\/\\\/
/\\\/\/\////\\\\/\/\///\
/\\\/\/\////\\\\/\/\///\
\/\\\\\//\\\///\\/////\/
------------------------
\//\////\/\/\/\/\\\\/\\/
<<><<>>>>><<>><<<<<>><>>
\\//\\///\\/\//\\\//\\//
------------------------
========================
Wszystkie kołdry mają tę samą formę:
- Są zawsze 24 na 18.
- Górna linia (linia 1) i dolna linia (linia 18) są
=
na całej długości . - Linie 2, 6, 13 i 17 są
-
na całej długości. - Linie 4 i 15 są tym samym losowym symetrycznym wzorem poziomym
<
i>
. - Wszystkie inne linie (3, 5, 7, 8, 9, 10, 11, 12, 14, 16) są wypełnione
/
i\
w całkowicie losowy sposób, że cała kołdra pozostaje poziomo i pionowo symetryczny .
Zauważ, że przy składaniu kołdry dokładnie na pół, pionowo lub poziomo, kształty postaci dokładnie do siebie pasują. Nie myl tego z dopasowanymi postaciami. np. linia 3 i linia 16 nie są identyczne, są to lustrzane odbicie w pionie.
Wyzwanie
Napisz program lub funkcję, która wydrukuje lub zwróci losową kołdrę artystyczną ASCII.
Ze względu na wiele zakodowanych linii i symetrię, jedyna prawdziwa losowość pochodzi od pierwszych 12 znaków w wierszach 3, 4, 5, 7, 8, 9:
- Pierwsze 12 znaków w linii 4 powinno mieć dowolny ciąg 12 znaków
<
i>
. - Pierwsze 12 znaków w wierszach 3, 5, 7, 8, 9 powinno mieć dowolny ciąg 12 znaków
/
i\
(niezależnie od siebie). - Te losowe sznurki są następnie odpowiednio dublowane, tworząc całą kołdrę.
Najkrótsza odpowiedź w bajtach wygrywa. Tiebreaker jest wcześniejszym postem.
Możesz użyć generatorów liczb pseudolosowych. (Nie, nie musisz udowadniać, że wszystkie 12 ciągów znaków <>
lub /\
PRNG twojego języka może zostać wygenerowany.)
Wynik może opcjonalnie zawierać końcowy znak nowej linii, ale nie może zawierać spacji końcowych ani innych znaków poza tym, co jest konieczne do pikowania.