Les boîtes ASCII ressemblent à ceci:
++ +---+ +------+ +---+ +---+
++ | | | | | | | |
| | | | | | | |
+-+ | | | | | | | |
+-+ | | | | | | +---+
+---+ | | | |
+--+ | | | | ++
| | | | | | ||
| | +------+ | | ||
+--+ | | ||
+---+ ||
||
+-----+ ||
+------------+ | | ++
| | | |
| | | |
+------------+ +-----+
Voici quelques exemples des mêmes boîtes ASCII implosées:
++ +- -+ +- -+ +- -+ +- -+
++ | - | | - - | | - | | - |
| | | -- | | | | |
+-+ | | | | " | - |
+-+ | - | || | | +- -+
+- -+ | | | |
+--+ | -- | | | ++
| | | - - | " ||
| | +- -+ | | ||
+--+ | - | | |
+- -+ | |
-- ||
- - +- -+ ||
+- - - -+ | - - | ++
| -- -- | | = |
| -- -- | | - - |
+- - - -+ +- -+
- -
--
Voici un lien vers toutes ces boîtes de cas de test dans un format plus facile à copier. L'ordre est toutes les entrées suivies de toutes les sorties dans le même ordre.
Votre objectif est de prendre une boîte ASCII en entrée et de renvoyer la boîte implosée. Les règles d'implosion sont:
- "+" ne change jamais; ni "-" ni "|" directement à côté de "+"
- En partant des coins, les "-" et "|" déplacer vers l'intérieur d'un espace de plus que le même personnage plus près du coin. Si un "-" et un "|" se déplacerait jamais au même endroit, ni l'un ni l'autre ne bouge.
- Si un "-" et un "-" se déplacent au même endroit, mettez un "=" à cet endroit. Si un "|" et "|" déplacer au même endroit, mettre un "à cet endroit. Ceux-ci comptent comme deux de leurs personnages respectifs au même endroit se déplaçant dans des directions opposées.
- Deux "-" ou deux "|" peuvent se dépasser, comme le montre l'exemple en bas à gauche.
- Si la boîte est suffisamment maigre, elle commencera à s'étendre vers l'extérieur de la même manière, en s'éloignant toujours du côté où elle a commencé.
- Le résultat doit être symétrique à travers la ligne médiane dans les directions x et y (en ignorant les nouvelles lignes); cela inclut des espaces, il peut donc être nécessaire de compléter le résultat avec des espaces pour satisfaire cela.
Détails de la règle:
- Il s'agit de code-golf, donc le programme le plus court en octets gagne.
- Des échappatoires standard s'appliquent.
- Vous pouvez supposer que chaque ligne se termine par un caractère de nouvelle ligne.
- Les seuls caractères de la chaîne d'entrée seront "+", "-", "|", "" et "\ n" (nouvelle ligne), et votre chaîne de sortie devrait suivre les mêmes règles, avec l'ajout de "=" et "comme caractères possibles.
- Vous pouvez éventuellement avoir une seule nouvelle ligne à la fin de la dernière ligne.
- La plus petite boîte ASCII que vous devez gérer est l'exemple en haut à gauche. Chaque boîte ASCII aura exactement 4 "+", exactement à ses coins.
- Vous devrez gérer des boîtes de taille
m x npour tous les entiersm,ntels que2<=m,n<256(la plus grande taille de chaîne possible255*(255+1)) - Vous pouvez supposer que vous obtiendrez toujours une seule boîte ASCII valide en entrée.
||de cet exemple doit être un "ou quelque chose comme ça
"? Je suppose que le "seul apparaît sur 3 de large ou plus?
"vous? À gauche ou à droite? Ça ne peut pas être les deux, mais ça ne peut pas non plus parce que le résultat est symétrique.