Aujourd'hui est Pourim sur lequel une coutume est de distribuer des biscuits en forme de triangle avec une garniture appelée hamantaschen (singulier: hamantasch ). Une autre coutume est de boire beaucoup.
Je ne suis pas le boulanger le plus parfait .... J'ai tant de hamantaschen de taille irrégulière à donner et tant d'amis à leur donner! Si je vous ai envoyé une photo de mes cookies, pouvez-vous me dire combien j'ai de quelle taille et de quel remplissage? Mais parce que c'est Pourim et que je suis trop ivre pour lire beaucoup de code, il doit être aussi petit que possible.
Définitions
Taille
Un hamantasch peut être de n'importe quelle taille . Le plus petit hamantasch est de taille 1 et ressemble à ceci:
/\ --
-- \/
Parfois, plusieurs hamantaschen peuvent se chevaucher . La forme ci-dessous compte pour deux hamantaschen (une taille 1, une taille 2):
/\
/\ \
----
Certains hamantaschen ont du remplissage . Cela sera indiqué en remplissant tous les espaces à l'intérieur avec un caractère. Notez que la taille 1 hamantaschen ne peut pas avoir de remplissage.
Nous allons nommer hamantaschen en fonction de remplissage et la taille. Utilisons le format <filling> <size>
et s'il n'est pas rempli, - <size>
(vous pouvez utiliser un espace au lieu d'un -
, mais le démarque n'aime pas ça).
Voici un . 2
, un . 4
et un - 3
:
/\
/./\
---- /./ \
\../ /./ \
\/ --------
Ce sont a @ 3
, a . 2
et a - 4
:
/\
/ /\
/\ / /@@\
/..\ / /@@@@\
---- --------
Voici quelque chose de plus difficile. Voyez comment le & 2
remplissage est moins important que prévu à cause de l'inclinaison du chevauchement - 3
? Il a un - 1
, un & 2
a - 3
et un & 4
:
--------
\ \/&/
\ /\/
\/&/
\/
Contribution
Vous recevrez un fichier texte ou une seule chaîne de hamantaschen (la nouvelle ligne de fin facultative et les espaces de fin facultativement rembourrés pour être pairs).
Limites
- Vous pouvez vous attendre à ce que la chaîne soit valide - c'est-à-dire que chaque caractère non blanc contribue à un hamantasch délicieusement sucré (pourquoi gaspiller la pâte?).
- Vous pouvez également vous attendre à être bien rempli ou non - qui est, chaque il sera Oreilles d'Aman entièrement rempli d'un caractère ASCII cohérent - ASCII 32 pour non rempli, ou quoi que ce soit pour 32..127 rempli ( à l' exception
/
,\
et-
). - Ces hamantaschen ne sont pas empilés en 3 espaces. Tout
/
et\
sera visible. Tous ceux-
qui ne sont pas bloqués par/
et\
seront visibles. Le remplissage vient en dernier. - Tous les hamantaschen auront au moins la moitié de leur ligne horizontale (arrondie) visible.
- Tout bloc de remplissage contigu ne remplit que le plus petit hamantasch qui l'entoure.
Production
Retourne une liste de "noms" de tous les hamantaschen qui répondent aux critères ci-dessus. La sortie peut être sous la forme que vous souhaitez (une chaîne, un hachage, une sortie standard, etc.).
Cas de test
Cas de test # 1
Entrée # 1:
/\
/ /\
/\ / /@@\
/..\ / /@@@@\
---- --------
/\
/**\
/*/\*\
/*/..\*\
--------
Sortie # 1:
. 2
. 2
- 4
@ 3
* 4
Cas de test # 2
Entrée # 2:
/\----
/\/\*\/
/ /\d\/
------
Sortie # 2:
- 3
- 2
d 2
- 1
* 2
- 1
Test n ° 3
Entrée # 3:
----
\/\/
/\/\ /\
---- /::\
----
Résultat n ° 3:
- 1
- 1
- 2
- 1
- 1
- 2
: 2
Test n ° 4
Entrée # 4:
/\/\
/ /\$\
-/--/\\
--/--\
/xxx/\
/xxx/##\
---/----\
/ \
--------
Sortie # 4:
$ 2
x 4
- 3
- 2
- 4
- 1
- 1
# 2
Cas de test n ° 5 non valide
Contribution:
/\
\/
Production:
Vous n'avez pas besoin de gérer cela.
/
et \
, et -
toujours l'emporterons sur le remplissage.
(1,0)
, sont désactivées par +1
. Pourtant, je sais ce que vous voulez dire, et je ne suis pas d'accord. Quelle indication y a-t-il qui (2, 2)
est le centre supérieur d'un - 2
et pas seulement le haut droit et gauche des deux - 1
s supérieurs ? Aucun que je puisse voir. Et la même logique s'applique à (3, 2)
. A moins que vous ne vouliez ajouter une règle pour supposer un maximum de hamantaschen possible ...