No me gusta escribir, así que dibujo mis laberintos en un formato muy simple:
# #####
# #
# ### #
# # # #
# # #
##### #
¿No es un laberinto ? Por supuesto, creo que todos los laberintos deberían verse en 3D, similar pero no el mismo que este desafío , para un máximo laberinto , así que (a regañadientes) actualicé manualmente el laberinto para que se vea así:
+-----+ +-----------------------------+
|\ \ |\ \
+ \ \ + \ \
\ \ \ \ +-----------------------+ \
\ \ \ \| |\ \
\ \ \ +-----------------------+ \ \
\ \ \ +-----------------+ \ \ \
\ \ \ |\ \ \ \ \
\ \ \ + \ \ \ \ \
\ \ \ \ \ +-----+ \ \ \ \
\ \ \ \ \ \ |\ \ \ \ \
\ \ \ \ \ \---+ \ \ \ \ \
\ \ \ \ +-----+ \ \ \ \ \ \
\ \ \ \| | \ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \
\ \ +-----------------+ \ \ \ \
\ \ \ \ \ \
\ \ \ \ \ \
\ +-----------------------------+ \ +-----+
\| | \| |
+-----------------------------+ +-----+
Desafortunadamente, es difícil trabajar con laberintos en ese formato, y después de todo ese tipeo manual, no quiero volver a escribir el original, así que necesito que escribas un programa para hacer la inversión por mí.
Reglas
- De entrada será una matriz de texto o un carácter de varias líneas que consiste solamente
" "
,"|"
,"\"
,"+"
,"-"
, y saltos de línea. - La salida consta de
" "
y"#"
, en el patrón descrito por el laberinto. - Debido a mis increíbles habilidades de diseño de laberintos, no puedes asumir nada sobre la estructura del laberinto, aparte de eso tiene una deconstrucción válida.
- En la 3d-ification, (el proceso que ahora debe deshacer), cada uno
#
se convirtió a este bloque de caracteres 3x4x7:+-----+ |\ \ + \ \ \ +-----+ \| | +-----+
- Los bloques adyacentes se unieron, de esta manera:
pero sin unir líneas, así que en realidad se ve así:+-----+-----+ |\ \ \ + \ \ \ \ +-----+-----+ \|\ \ \ + \ \ \ \ +-----+-----+ \| | | +-----+-----+
+-----------+ |\ \ + \ \ \ \ \ \ \ \ \ \ \ \ +-----------+ \| | +-----------+
- Los espacios cóncavos a veces bloquean partes de otras paredes.
+-----------+ |\ \ + \ \ \ \ +-----+ \ \ \ | \ \ \---+ \ +-----+ \| | +-----+
- El espacio en blanco al final de la entrada o salida es aceptable. (Debe especificar si su respuesta requiere espacios en blanco finales en la entrada).
- Los espacios en blanco iniciales deben corresponder a espacios vacíos en la entrada.
- Todavía no me gusta escribir, por lo que gana el código más corto
Casos de prueba:
Input:
+-----+ +-----------------------------+
|\ \ |\ \
+ \ \ + \ \
\ \ \ \ +-----------------------+ \
\ \ \ \| |\ \
\ \ \ +-----------------------+ \ \
\ \ \ +-----------------+ \ \ \
\ \ \ |\ \ \ \ \
\ \ \ + \ \ \ \ \
\ \ \ \ \ +-----+ \ \ \ \
\ \ \ \ \ \ |\ \ \ \ \
\ \ \ \ \ \---+ \ \ \ \ \
\ \ \ \ +-----+ \ \ \ \ \ \
\ \ \ \| | \ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \
\ \ +-----------------+ \ \ \ \
\ \ \ \ \ \
\ \ \ \ \ \
\ +-----------------------------+ \ +-----+
\| | \| |
+-----------------------------+ +-----+
Output:
# #####
# #
# ### #
# # # #
# # #
##### #
Input:
+-----+
|\ \
+ \ \
\ +-----+
\| |
+-----+
Output:
#
Input:
+-----------------+
|\ \
+ \ \
+-----+ +-----+ +-----+
|\ \ |\ \
+ \ \---+ \ \
\ \ +-----+ \ +-----+ \
\ \ \ | \| |\ \
\ \ \---+ +-----+ \ \
\ \ +-----+ +-----+ \
\ \ \ |\ \
\ \ \ + \ \
\ +-----+ +-----+ +-----+
\| |\ \ |
+-----+ \ \---+
\ +-----------------+
\| |
+-----------------+
Output:
###
## ##
# #
## ##
###
Input:
+-----------------------------------------------------------------------------------------------------+
|\ \
+ \ \
\ +-----------------------------------------------+ +-----------------------------------------+ \
\| |\ \ |\ \
+-----------------------------------------------+ \ \---------------------------------------+ \ \
+-----+ +-----------------------------+ \ \ \ +-----------------------------+ \ \ \
|\ \ |\ \ \ \ \ |\ \ \ \ \
+ \ \ + \ \ \ \ \ + \ \ \ \ \
\ \ \ \ +-----------+ +-----+ \ \ \ \ \ +-----------------------+ \ \ \ \
\ \ \ \| |\ \ |\ \ \ \ \ \| |\ \ \ \ \
\ \ \ +-----------+ \ \---+ \ \ \ \ \ +-----------------------+ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \ \ \ +-----------------------+ \ \ \ \ \ \
\ \ \ |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ + \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ +-----+ \ \ \ \ \ \ \ +-----------------------------+ \ \ \ \ \ \
\ \ \ \| | \ \ \ \ \ \ \| | \ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \ +-----------------------------+ \ \ \ \ \ \
\ \ +-----------+ \ \ \ \ \ +-----------------------------------+ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ +-----------+ \ \ \ \ \ +-----------------------+ +-----+ \ \ \ \ \ \
\ \ \ | \ \ \ \ \ \ |\ \ | \ \ \ \ \ \
\ \ \---------+ \ \ \ \ \ \---------------------+ \ \---+ \ \ \ \ \ \
\ \ \ +-----------+ \ \ \ \ +-----------+ \ \ \ +-----+ \ \ +-----+
\ \ \ |\ \ \ \ \ |\ \ \ \ \ |\ \ \| |
\ \ \ + \ \ \ \ \ + \ \ \ \ \ + \ \ +-----+
\ \ \ \ +-----------------+ \ \ \ \ \ \ \ +-----+ \ +-----+ \
\ \ \ \| | \ \ \ \ \ \ \| | \| |\ \
\ \ \ +-----------------+ \ \ \ \ \ \ +-----+ +-----+ \ \
\ \ +-----------------------------+ +-----+ +-----------------------+ +-----------+
\ \ \
\ \ \
\ +-----------------------------------------------------------------------------------------------------+
\| |
+-----------------------------------------------------------------------------------------------------+
Output:
#################
# #
# ##### # ##### #
# # # # # #
# # # # ##### # #
# # # # #
### # ####### # #
# # # # # #
# ### # ## # ##
# # ## #
#################
Input:
+-----------------+
|\ \
+ \ \
\ \ \
\ \ \
\ \ \
\ \ \
\ \ \
\ \ \
\ +-----------------+
\| |
+-----------------+
Output:
###
###
###
Input: (Note leading whitespace)
+-----+ +-----+
|\ \ |\ \
+ \ \ + \ \
+-----+-----+-----+-----+
|\ \ |\ \ |
+ \ \---+ \ \---+
\ +-----+-----+-----+-----+
\| |\ \ |\ \
+-----+ \ \---+ \ \
+-----+-----+-----+-----+
|\ \ |\ \ |
+ \ \---+ \ \---+
\ +-----+ \ +-----+
\| | \| |
+-----+ +-----+
Output:
# #
# #
# #
# #
Respuestas:
Python 2 , 81 bytes
Pruébalo en línea!
Toma la entrada como una lista de cadenas (o una lista de listas de caracteres). Imprime la salida, terminando con error.
La idea es similar a la de tsh . Observamos los caracteres marcados a
?
continuación para ver cuáles son espacios y cuáles son\
:Dentro de cada fila con
?
's, una\
marca una cresta vertical entre una celda llena y una celda vacía del laberinto. Debido a que estas crestas están en la capa superior del laberinto, sus\
personajes nunca quedan oscurecidos por otro elemento del laberinto.Para ver las
?
posiciones, el código itera a través de filask=1,4,7,...
(indexado a cero), y en cada fila mira cada sexta posición comenzando por la posiciónk
. Rastrea si estamos en una celda vacía o llena en el bitb
, y voltea ese bit cada vez que\
se encuentra un. Después de cada carácter leído, agrega el carácter para empty () o full (
#
) segúnb
e imprime la cadena resultante una vez que se completa la fila.fuente
JavaScript (Node.js) , 85 bytes
Pruébalo en línea!
-
Gracias @ Arnauld , ahorró 7 bytes
fuente
Jalea ,
2220 bytesPruébalo en línea!
Un enlace monádico que toma una cadena Jelly como entrada y devuelve el laberinto procesado como una cadena Jelly que incluye una fila de espacios en blanco al final.
Se
Ḋ
podría guardar 1 byte si una sola línea de espacios en blanco iniciales fuera aceptable.Se inspiró en la fórmula de @ tsh , ¡así que asegúrese de votar también!
Explicación
fuente
05AB1E ,
2522 bytes-1 byte gracias a Kevin Cruijssen
Pruébalo en línea!
Puerto de la respuesta de Python de xnor . Toma la entrada como una matriz de caracteres. El enlace TIO muestra la entrada como una cadena multilínea para facilitar la lectura, con el
|€S
encabezado convirtiéndolo al formato de matriz de caracteres.fuente
ε'\¢„ #sè}
aðм€g„ #sè
м
yK
.Retina 0.8.2 , 72 bytes
Pruébalo en línea! Explicación:
Desvincular todas las líneas.
Elimine las últimas tres líneas ya que no las necesito.
Mantenga solo el centro de cada grupo de tres líneas. (En Retina 1, creo que las dos etapas anteriores se pueden hacer en una sola etapa:.
,G1,3,-5`
)Completa las caras de los bloques.
Mantenga solo el segundo carácter de cada bloque.
fuente
C (sonido metálico) ,
120117 bytesPruébalo en línea!
Inspirado por las otras respuestas.
fuente