Dzisiaj jest Purim, w którym jednym ze zwyczajów jest rozdawanie ciasteczek w kształcie trójkąta z nadzieniem zwanych hamantaschen (liczba pojedyncza: hamantasch ). Innym zwyczajem jest picie dużych ilości.
Nie jestem najdoskonalszym piekarzem ... Mam tak wiele nieregularnych rozmiarów hamantaschen do rozdania i tylu przyjaciół, którzy mogą je dać! Jeśli przesłałem Ci zdjęcie moich ciasteczek, czy możesz mi powiedzieć, ile mam ich rozmiarów i wypełnienia? Ale ponieważ jest to Purim i jestem zbyt pijany, aby czytać dużo kodu, musi on być tak mały, jak to tylko możliwe.
Definicje
Rozmiar
Hamantasch może mieć dowolny rozmiar . Najmniejszy hamantasch ma rozmiar 1 i wygląda następująco:
/\ --
-- \/
Czasami wiele hamantaschen może się nakładać . Poniższy kształt liczy się jako dwa hamantaschen (jeden rozmiar 1, jeden rozmiar 2):
/\
/\ \
----
Niektóre hamantaschen mają nadzienie . Zostanie to wskazane poprzez wypełnienie wszystkich białych znaków wewnątrz znakiem. Pamiętaj, że hamantaschen rozmiar 1 nie może mieć wypełnienia.
Będziemy wymienić Hamantaschen podstawie napełniania i wielkości. Użyjmy formatu, <filling> <size>
a jeśli nie zostanie wypełniony - <size>
(zamiast spacji możesz użyć spacji -
, ale przecena nie lubi tego).
Oto a . 2
, a . 4
i a - 3
:
/\
/./\
---- /./ \
\../ /./ \
\/ --------
Są to: @ 3
a . 2
oraz a - 4
:
/\
/ /\
/\ / /@@\
/..\ / /@@@@\
---- --------
Oto coś trudniejszego. Widzisz, jak & 2
ma mniej wypełnienia, niż można się spodziewać ze względu na nachylenie nakładania się - 3
? Ma a - 1
, & 2
a - 3
i a & 4
:
--------
\ \/&/
\ /\/
\/&/
\/
Wejście
Otrzymasz plik tekstowy lub pojedynczy ciąg hamantaschen (opcjonalnie końcowy znak nowej linii i opcjonalnie dopełniony końcowy biały znak, aby być parzystym).
Granice
- Możesz oczekiwać, że łańcuch będzie prawidłowy - to znaczy, że każda postać niebiałego znaku przyczynia się do cudownie słodkiego hamantascha (po co marnować ciasto?).
- Można również oczekiwać, iż zostanie poprawnie wypełniony lub nie - to znaczy każdy hamantaszen zostanie całkowicie wypełniony spójny znak ASCII - ASCII 32 niewypełnionych lub cokolwiek 32..127 dla wypełniony (z wyjątkiem
/
,\
i-
). - Te hamantaschen nie są układane w stosy na 3 pola . Wszystko
/
i\
będzie widoczne. Wszystkie-
, które nie są zablokowane/
i\
będą widoczne. Wypełnianie jest ostatnie. - Wszystkie hamantaschen będą miały co najmniej połowę linii poziomej (zaokrąglenie w górę).
- Każdy ciągły blok wypełnienia wypełnia tylko najmniejszy hamantasch, który go otacza.
Wynik
Zwróć listę „nazw” wszystkich hamantaschen, które można znaleźć spełniające powyższe kryteria. Dane wyjściowe mogą mieć dowolną formę (ciąg, skrót, stdout itp.).
Przypadki testowe
Przypadek testowy nr 1
Wejście nr 1:
/\
/ /\
/\ / /@@\
/..\ / /@@@@\
---- --------
/\
/**\
/*/\*\
/*/..\*\
--------
Wyjście nr 1:
. 2
. 2
- 4
@ 3
* 4
Przypadek testowy nr 2
Wejście nr 2:
/\----
/\/\*\/
/ /\d\/
------
Wyjście nr 2:
- 3
- 2
d 2
- 1
* 2
- 1
Test nr 3
Wejście nr 3:
----
\/\/
/\/\ /\
---- /::\
----
Wyjście nr 3:
- 1
- 1
- 2
- 1
- 1
- 2
: 2
Test nr 4
Wejście nr 4:
/\/\
/ /\$\
-/--/\\
--/--\
/xxx/\
/xxx/##\
---/----\
/ \
--------
Wyjście 4:
$ 2
x 4
- 3
- 2
- 4
- 1
- 1
# 2
Nieprawidłowy przypadek testowy nr 5
Wejście:
/\
\/
Wynik:
Nie musisz sobie z tym poradzić.
/
i \
, i -
zawsze będzie wypełnienie atutem.
(1,0)
, są wyłączone +1
. Wiem jednak, co masz na myśli i nie zgadzam się. Jakie jest wskazanie, że (2, 2)
jest to górny środek a, - 2
a nie tylko górny prawy i lewy z dwóch górnych - 1
s? Brak, który widzę. Ta sama logika dotyczy (3, 2)
. Chyba że chcesz dodać regułę zakładającą maksymalne możliwe hamantaschen ...