Сьогодні Пурім, на якому один звичай - видавати печиво у формі трикутника із начинкою, що називається hamantaschen (сингулярно: hamantasch ). Ще один звичай - сильно пити.
Я не найдосконаліший пекар .... У мене так багато гаманташень нерегулярного розміру, а стільки друзів подарувати їх! Якщо я надіслав вам зображення моїх файлів cookie, ви можете мені сказати, скільки я маю, якого розміру та наповнення? Але оскільки це Пурім, і я занадто п’яний, щоб читати багато коду, він повинен бути настільки малим кодом, скільки ви можете зробити.
Визначення
Розмір
Гаманташ може бути будь-якого розміру . Найменший гаманташ - розмір 1 і виглядає приблизно так:
/\ --
-- \/
Іноді множинні hamantaschen можуть перекриватися . Форма внизу вважається двома гаманташен (один розмір 1, один розмір 2):
/\
/\ \
----
Деякі hamantaschen мають наповнення . Це буде показано, заповнивши все пробіл всередині символом. Зверніть увагу, що гаманташен розміром 1 не може мати заповнення.
Ми будемо називати hamantaschen на основі заповнення і розміру. Давайте скористаємося форматом, <filling> <size>
і якщо він не заповнений, - <size>
(ви можете використовувати пробіл замість а -
, але розмітка цього не любить).
Ось . 2
, А . 4
, і - 3
:
/\
/./\
---- /./ \
\../ /./ \
\/ --------
Це a @ 3
, a . 2
і a - 4
:
/\
/ /\
/\ / /@@\
/..\ / /@@@@\
---- --------
Ось щось складніше. Подивіться, як & 2
менше заповнення менше, ніж ви очікували через нахил від перекриття - 3
? Він має: a - 1
, & 2
a - 3
і a & 4
:
--------
\ \/&/
\ /\/
\/&/
\/
Вхідні дані
Вам буде надано текстовий файл або один рядок з hamantaschen (необов’язковий трейлінг нового рядка та опціонально прокладений пробільний пробіл, щоб бути рівним).
Обмеження
- Ви можете розраховувати, що рядок буде дійсним - тобто кожен персонаж, що не пробігає, сприяє вишуканому солодкому гаманташу (навіщо витрачати тісто?).
- Можна також очікувати , що вона буде правильно заповнена чи ні , - то є, кожен hamantasch буде повністю наповненим послідовним ASCII символ - ASCII 32 для незаповненого, або що - небудь 32..127 для заповнення ( за виключення
/
,\
і-
). - Ці hamantaschen не укладаються в 3-пробіл. Все
/
і\
буде видно. Все,-
що не заблоковано,/
і\
буде видно. Наповнення приходить дуже останньою. - Усі hamantaschen матимуть видиму щонайменше половину своєї горизонтальної лінії (округлення).
- Будь-який суміжний блок заповнення заповнює лише найменший гаманташ, який його оточує.
Вихід
Поверніть список "імен" усіх гаманташен, які можна знайти, що відповідають вищевказаним критеріям. Вихід може бути в будь-якій формі, яку ви хочете (рядок, хеш, stdout тощо).
Тестові справи
Тест №1
Введення №1:
/\
/ /\
/\ / /@@\
/..\ / /@@@@\
---- --------
/\
/**\
/*/\*\
/*/..\*\
--------
Вихід №1:
. 2
. 2
- 4
@ 3
* 4
Тест №2
Введення №2:
/\----
/\/\*\/
/ /\d\/
------
Вихід №2:
- 3
- 2
d 2
- 1
* 2
- 1
Тест №3
Введення №3:
----
\/\/
/\/\ /\
---- /::\
----
Вихід №3:
- 1
- 1
- 2
- 1
- 1
- 2
: 2
Тест №4
Введення №4:
/\/\
/ /\$\
-/--/\\
--/--\
/xxx/\
/xxx/##\
---/----\
/ \
--------
Вихід №4:
$ 2
x 4
- 3
- 2
- 4
- 1
- 1
# 2
Недійсний тестовий випадок №5
Вхід:
/\
\/
Вихід:
Вам не потрібно з цим впоратися.
/
і \
, і -
завжди буде начинка козир.
(1,0)
, вимкнено на +1
. Все-таки я знаю, що ви маєте на увазі, і я не згоден. Яка вказівка є на те (2, 2)
, що верхній центр a, - 2
а не лише праворуч і ліворуч від двох верхніх - 1
s? Жодного, що я не бачу. І така ж логіка стосується і (3, 2)
. Якщо ви не хочете додати правило, щоб припустити максимально можливе hamantaschen ...