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$g
del código (-1)$c=$argv[1]-1
lugar de($c=$argv[1])-1
, en<=$c
lugar de<$c
y en$c
lugar 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%s
se 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
n
veces (como una sola lista), con*n
, y la trunca a las primerasn
entradas, 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
m
opció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