Je n'aime pas taper, alors je dessine mes labyrinthes dans un format très simple:
# #####
# #
# ### #
# # # #
# # #
##### #
N'est-ce pas un labyrinthe ? Bien sûr, je pense que tous les labyrinthes devraient ressembler à la 3D, mais ils ne ressemblent pas à ce défi , pour un maximum d' esprit labyrinthique . J'ai donc (à contrecoeur) mis à jour manuellement le labyrinthe pour qu'il ressemble à ceci:
+-----+ +-----------------------------+
|\ \ |\ \
+ \ \ + \ \
\ \ \ \ +-----------------------+ \
\ \ \ \| |\ \
\ \ \ +-----------------------+ \ \
\ \ \ +-----------------+ \ \ \
\ \ \ |\ \ \ \ \
\ \ \ + \ \ \ \ \
\ \ \ \ \ +-----+ \ \ \ \
\ \ \ \ \ \ |\ \ \ \ \
\ \ \ \ \ \---+ \ \ \ \ \
\ \ \ \ +-----+ \ \ \ \ \ \
\ \ \ \| | \ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \
\ \ +-----------------+ \ \ \ \
\ \ \ \ \ \
\ \ \ \ \ \
\ +-----------------------------+ \ +-----+
\| | \| |
+-----------------------------+ +-----+
Malheureusement, il est difficile de travailler avec des labyrinthes dans ce format, et après toute cette saisie manuelle, je ne veux pas simplement retaper l'original. J'ai donc besoin que vous écriviez un programme pour effectuer l'inversion à ma place.
Règles
- Entrée est une matrice de chaîne ou caractère multiligne constitué uniquement de
" "
,"|"
,"\"
,"+"
,"-"
, et les nouvelles lignes. - La sortie consiste en
" "
et"#"
dans le motif décrit par le labyrinthe. - En raison de mes incroyables compétences en matière de conception de labyrinthe, vous ne pouvez rien présumer de la structure du labyrinthe, à part sa déconstruction valide.
- Dans la 3d-ification (le processus que vous devez maintenant annuler), chacun a
#
été converti en ce bloc de caractères 3x4x7:+-----+ |\ \ + \ \ \ +-----+ \| | +-----+
- Les blocs adjacents ont été assemblés, comme ceci:
mais sans joindre les lignes, il a donc l'aspect suivant:+-----+-----+ |\ \ \ + \ \ \ \ +-----+-----+ \|\ \ \ + \ \ \ \ +-----+-----+ \| | | +-----+-----+
+-----------+ |\ \ + \ \ \ \ \ \ \ \ \ \ \ \ +-----------+ \| | +-----------+
- Les espaces concaves bloquent parfois des parties d'autres murs.
+-----------+ |\ \ + \ \ \ \ +-----+ \ \ \ | \ \ \---+ \ +-----+ \| | +-----+
- Les espaces de fin en entrée ou en sortie sont acceptables. (Vous devez spécifier si votre réponse nécessite une fin d’espace dans l’entrée.)
- Les espaces de début doivent correspondre aux espaces vides de l’entrée.
- Je n'aime toujours pas taper, donc le code le plus court gagne
Cas de test:
Input:
+-----+ +-----------------------------+
|\ \ |\ \
+ \ \ + \ \
\ \ \ \ +-----------------------+ \
\ \ \ \| |\ \
\ \ \ +-----------------------+ \ \
\ \ \ +-----------------+ \ \ \
\ \ \ |\ \ \ \ \
\ \ \ + \ \ \ \ \
\ \ \ \ \ +-----+ \ \ \ \
\ \ \ \ \ \ |\ \ \ \ \
\ \ \ \ \ \---+ \ \ \ \ \
\ \ \ \ +-----+ \ \ \ \ \ \
\ \ \ \| | \ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \
\ \ +-----------------+ \ \ \ \
\ \ \ \ \ \
\ \ \ \ \ \
\ +-----------------------------+ \ +-----+
\| | \| |
+-----------------------------+ +-----+
Output:
# #####
# #
# ### #
# # # #
# # #
##### #
Input:
+-----+
|\ \
+ \ \
\ +-----+
\| |
+-----+
Output:
#
Input:
+-----------------+
|\ \
+ \ \
+-----+ +-----+ +-----+
|\ \ |\ \
+ \ \---+ \ \
\ \ +-----+ \ +-----+ \
\ \ \ | \| |\ \
\ \ \---+ +-----+ \ \
\ \ +-----+ +-----+ \
\ \ \ |\ \
\ \ \ + \ \
\ +-----+ +-----+ +-----+
\| |\ \ |
+-----+ \ \---+
\ +-----------------+
\| |
+-----------------+
Output:
###
## ##
# #
## ##
###
Input:
+-----------------------------------------------------------------------------------------------------+
|\ \
+ \ \
\ +-----------------------------------------------+ +-----------------------------------------+ \
\| |\ \ |\ \
+-----------------------------------------------+ \ \---------------------------------------+ \ \
+-----+ +-----------------------------+ \ \ \ +-----------------------------+ \ \ \
|\ \ |\ \ \ \ \ |\ \ \ \ \
+ \ \ + \ \ \ \ \ + \ \ \ \ \
\ \ \ \ +-----------+ +-----+ \ \ \ \ \ +-----------------------+ \ \ \ \
\ \ \ \| |\ \ |\ \ \ \ \ \| |\ \ \ \ \
\ \ \ +-----------+ \ \---+ \ \ \ \ \ +-----------------------+ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \ \ \ +-----------------------+ \ \ \ \ \ \
\ \ \ |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ + \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ +-----+ \ \ \ \ \ \ \ +-----------------------------+ \ \ \ \ \ \
\ \ \ \| | \ \ \ \ \ \ \| | \ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \ +-----------------------------+ \ \ \ \ \ \
\ \ +-----------+ \ \ \ \ \ +-----------------------------------+ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ +-----------+ \ \ \ \ \ +-----------------------+ +-----+ \ \ \ \ \ \
\ \ \ | \ \ \ \ \ \ |\ \ | \ \ \ \ \ \
\ \ \---------+ \ \ \ \ \ \---------------------+ \ \---+ \ \ \ \ \ \
\ \ \ +-----------+ \ \ \ \ +-----------+ \ \ \ +-----+ \ \ +-----+
\ \ \ |\ \ \ \ \ |\ \ \ \ \ |\ \ \| |
\ \ \ + \ \ \ \ \ + \ \ \ \ \ + \ \ +-----+
\ \ \ \ +-----------------+ \ \ \ \ \ \ \ +-----+ \ +-----+ \
\ \ \ \| | \ \ \ \ \ \ \| | \| |\ \
\ \ \ +-----------------+ \ \ \ \ \ \ +-----+ +-----+ \ \
\ \ +-----------------------------+ +-----+ +-----------------------+ +-----------+
\ \ \
\ \ \
\ +-----------------------------------------------------------------------------------------------------+
\| |
+-----------------------------------------------------------------------------------------------------+
Output:
#################
# #
# ##### # ##### #
# # # # # #
# # # # ##### # #
# # # # #
### # ####### # #
# # # # # #
# ### # ## # ##
# # ## #
#################
Input:
+-----------------+
|\ \
+ \ \
\ \ \
\ \ \
\ \ \
\ \ \
\ \ \
\ \ \
\ +-----------------+
\| |
+-----------------+
Output:
###
###
###
Input: (Note leading whitespace)
+-----+ +-----+
|\ \ |\ \
+ \ \ + \ \
+-----+-----+-----+-----+
|\ \ |\ \ |
+ \ \---+ \ \---+
\ +-----+-----+-----+-----+
\| |\ \ |\ \
+-----+ \ \---+ \ \
+-----+-----+-----+-----+
|\ \ |\ \ |
+ \ \---+ \ \---+
\ +-----+ \ +-----+
\| | \| |
+-----+ +-----+
Output:
# #
# #
# #
# #
Réponses:
Python 2 , 81 octets
Essayez-le en ligne!
Prend la saisie comme une liste de chaînes (ou une liste de listes de caractères). Imprime la sortie en terminant par une erreur.
L'idée est similaire à celle de tsh . Nous regardons les caractères marqués
?
ci-dessous pour voir quels sont les espaces et lesquels sont\
:Dans chaque ligne avec
?
's, a\
marque une arête verticale entre une cellule remplie et une cellule vide du labyrinthe. Comme ces crêtes sont dans la couche supérieure du labyrinthe, leurs\
personnages ne sont jamais masqués par un autre élément du labyrinthe.Pour examiner les
?
positions, le code parcourt des lignesk=1,4,7,...
(index zéro), et chaque ligne examine chaque 6ème position en commençant par positionk
. Il surveille si nous sommes dans une cellule vide ou pleine dans le bitb
, et retourne ce bit chaque fois que a\
est rencontré. Après chaque caractère lu, il ajoute le caractère pour empty () ou full (
#
) en fonction deb
, et affiche la chaîne résultante une fois la ligne terminée.la source
JavaScript (Node.js) , 85 octets
Essayez-le en ligne!
-
Merci @ Arnauld , enregistré 7 octets
la source
Gelée ,
22 à20 octetsEssayez-le en ligne!
Un lien monadique prenant une chaîne Jelly en tant qu'entrée et renvoyant le labyrinthe traité sous forme d'une chaîne Jelly comprenant une ligne d'espaces de fin.
Un octet
Ḋ
peut être sauvegardé si une seule ligne d’espaces blancs est acceptable.Vous vous êtes inspiré de la formule de @ tsh , assurez-vous de l'invoquer également!
Explication
la source
05AB1E ,
2522 octets-1 octet grâce à Kevin Cruijssen
Essayez-le en ligne!
La réponse du port de xnor en python . Prend la saisie sous forme de matrice de caractères. Le lien TIO affiche l'entrée sous forme de chaîne multiligne pour la lisibilité, l'en-
|€S
tête étant convertie en format de matrice de caractères.la source
ε'\¢„ #sè}
àðм€g„ #sè
м
etK
.Retina 0.8.2 , 72 octets
Essayez-le en ligne! Explication:
Éliminez toutes les lignes.
Supprimez les trois dernières lignes car je n'en ai pas besoin.
Ne conservez que le milieu de chaque groupe de trois lignes. (Dans Retina 1, je pense que les deux étapes ci-dessus peuvent être réalisées en une seule étape:.
,G1,3,-5`
)Remplissez les faces des blocs.
Ne conservez que le deuxième caractère de chaque bloc.
la source
C (clang) ,
120117 octetsEssayez-le en ligne!
Inspiré par les réponses des autres.
la source