Je définis quatre styles de boîte:
+-----+ ooooooo ^^^^^ *******
| 1 | o 2 o < 3 > * 4 *
| | o o < > * *
+-----+ ooooooo vvvvv *******
Écrivez un programme ou une fonction qui, étant donné un entier et une chaîne, trouvera l'une des cases ci-dessus à l'intérieur de la chaîne et changera son style dans le style de boîte demandé par l'utilisateur. Par exemple:
1
This is a test document.
It ********* has
no *purpose* other than
dem*onstrat*ion.
*********
Devient:
This is a test document.
It +-------+ has
no |purpose| other than
dem|onstrat|ion.
+-------+
Vous pouvez supposer que l'entrée contient exactement une case valide d'au moins 3x3. Votre code doit ignorer les cases incomplètes / incorrectes:
ooooooooooooooooooooooooooooooooo
o This is not a box. o This is. o
ooooooooooo ooooo ooooooooooooooo
^^^^ ######
<NOPE> #NOPE#
vVVv ######
Le code le plus court en octets gagne.
o This is. o
eto This is no
(avec lignes deo
dessus et de dessous, bien sûr).Réponses:
Julia,
995818713613 octetsNon golfé avec explication:
Contrairement à la façon dont je l'ai abordé pour la première fois, ce code ne fonctionnera correctement que pour les numéros de type "valides" - 1, 2, 3 ou 4. Il est divisé en deux parties - un box-finder et un box-replacer. Le code de recherche de boîte, fonction
f(t)
, utilise l'expression régulière pour localiser les sommets et, pour les boîtes plus simples (types 2 et 4), les fonds.Le premier regex est le moyen le plus simple que j'ai pu trouver pour trouver les box-tops. En voici la logique:
Le code est utilisé comme ceci:
L'impression n'est pas incluse dans la fonction, car le format de sortie n'est pas spécifié - je retourne juste la chaîne, vous pouvez l'imprimer ensuite comme vu ci-dessus.
la source