Tous les programmeurs savent que les supports []{}()<>
sont vraiment amusants. Pour exacerber ce plaisir, des groupes de crochets entrelacés peuvent être transformés en diagrammes mignons et flous.
Disons que vous avez une chaîne qui contient des crochets équilibrés, comme [{][<(]})>(())
. La première étape consiste à faire pivoter la chaîne de 45 degrés dans le sens des aiguilles d'une montre. (Dans Mathematica, cela peut être presque fait avec Rotate[ur_string,-pi/4]
). Voici le résultat de la première étape:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Ajoutez ensuite un espace en diagonale entre chaque personnage.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Ensuite, commencez par la tranche la plus à gauche et tracez un carré entre celle-ci et son partenaire criminel.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
Répétez cette procédure avec chaque paire de crochets, en écrasant les caractères précédents avec +
s si nécessaire.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
Continuez jusqu'à ce que vous ayez tout fait beau et carré.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
Contribution
L'entrée consistera en une seule ligne de crochets équilibrés et pas d'autres caractères, chaque crochet étant l'un des []{}()<>
. Chaque type de support est équilibré individuellement, bien que différents types puissent se chevaucher (c’est ce qui rend les carrés intéressants). Un retour à la ligne est facultatif.
Sortie
La sortie sera le motif carré de verrouillage généré à partir de la chaîne de parenthèse. Les espaces de fin et les nouvelles lignes sont facultatifs, mais il ne doit pas y avoir d'espaces de début.
Objectif
C'est code-golf, le moins d'octets gagne.
[[]]
pouvons-nous produire deux carrés qui se chevauchent ou devons-nous produire un carré à l'intérieur de l'autre?