Dado un número entero impar N (5 <= N <= 51), genere un laberinto con una longitud lateral N que cumpla los siguientes requisitos:
El laberinto debe estar compuesto por los personajes | -y +. Debe usar el |personaje como un muro vertical, el -personaje como un muro horizontal, y si ese muro gira, +debe usarse el personaje .
El ancho de la ruta debe ser un carácter.
El laberinto debe girar al menos cuatro veces.
El laberinto debe tener paredes exteriores que se rompan en dos puntos: el inicio y el final.
El laberinto debe constar de un camino sin interrupciones, desde el principio hasta el final.
Por ejemplo, el siguiente es un laberinto válido: ( N = 5)
+---+
| |
| | |
|
--+--
Y para N = 7:
--+---+
| |
| | | |
| | | |
| | | |
| |
+---+--
Recuerde, este es el código de golf , por lo que gana el código con el menor número de bytes.

Respuestas:
Gelatina ,
36 35 34 3332 bytesTryItOnline!
Construye un nighter ™ al revés con ejemplos como:
¿Cómo?
(cada byte ahorrado implicó cambios bastante no triviales, ver el historial de edición si está interesado, aunque acabo de notar que Link 1 es la misma cuenta de bytes como la repetición más convencional y unirse a:
_2⁶ẋ“ ||“|”j)fuente
JavaScript (ES6), 86
92 116Casi un desafío de complejidad kolmogorv ...Con un poco de pensamiento lateral (inspirado en la respuesta de @ Neil), puede ser muy corto. Solo gira 90 °Prueba
fuente
Lote, 216 bytes
|s son torpes en lotes por lo quereflejórotar los ejemplos en su lugar.fuente
PHP, 99 bytes
puertas de arriba a abajo
PHP, 157 bytes
puertas derecha izquierda
@Titus Gracias por minializar los bytes
fuente
$p("",$c*($c-4),...)en lugar destr_repeat(...,$c-4)(-2)$p($n,$c-1," | ")lugar de$p("\n ",$c-1," | ")($c)%4(-2), eliminar$gdel código (-1)$c=$argv[1]-1lugar de($c=$argv[1])-1, en<=$clugar de<$cy en$clugar de$c-1(-3)JavaScript (ES6), 87 bytes
Una función recursiva. Emite algunos espacios finales.
Prueba
Mostrar fragmento de código
fuente
Ruby 72 o 69 bytes
Función lambda. Como se muestra, devuelve una cadena separada por una nueva línea. Elimine * $ / para devolver una matriz de cadenas.
Dibuja un laberinto girado 90 grados de los ejemplos. Para cada línea, se selecciona una cadena de formato (por ejemplo,
+%s |para la primera línea (no hay línea cero) y%sse sustituye con un número apropiado de-espacios usando el%operador (equivalente a sprintf, pero más corto).fuente
Java 7, 228 bytes
Se utilizó una salida vertical similar a la respuesta Jelly de @JonathanAllan .
Ungolfed y código de prueba:
Pruébalo aquí.
Salida:
fuente
Given an odd integer N (5 <= N <= 51), generate a maze with side length N. Parece que tienes una longitud lateral superior e inferior diferente para la tuya ...Python 2, 89 bytes
repl.it
Construye un muro interno
x, como'+---- |'y un corredor internoy, como'| |'Luego construye una lista de
[x,y,x[::-1],y](x[::-1]es un reverso dex)Luego repite esa lista de
nveces (como una sola lista), con*n, y la trunca a las primerasnentradas, con(...)[:n], une la lista con avances de línea, con'\n'.join(...)e imprime el resultado.fuente
Raqueta 187 bytes
Usando el patrón de visualización por @JonathanAllan
Sin golf:
Pruebas:
Salida:
fuente
GNU sed 140 bytes
Incluye +1 para -r
Pruébalo en línea!
Toma aportes en unario ( ver este consenso ).
Básicamente, inserta el laberinto de tamaño 5, luego agrega el segundo y tercer carácter de cada línea al principio tantas veces como sea necesario. Luego duplica la tercera línea (alternando
|y) tantas veces como sea necesario.Lo único interesante que utilicé es la
mopción en la línea 6 que permite^y$hacer coincidir respectivamente (además del comportamiento normal) la cadena vacía después de una nueva línea y la cadena vacía antes de una nueva línea.fuente
T-SQL, 123/79 bytes
Golfizado:
Sin golf:
Si haces trampa y solo haces un laberinto estrecho, el script puede reducirse a 79 bytes:
Golfizado:
Sin golf:
Violín por la respuesta larga
fuente
JavaScript (ES6), 96 bytes
Esperaba que la recursión fuera la ruta más corta, y aparentemente es ...
fuente