Dado um número inteiro ímpar N (5 <= N <= 51), gere um labirinto com o comprimento lateral N que segue os seguintes requisitos:
O labirinto deve ser composto pelos caracteres
|
-
e +
. Ele deve usar o |
personagem como uma parede vertical, o -
personagem como uma parede horizontal e, se essa parede virar, o personagem +
deve ser usado.
A largura do caminho deve ser um caractere.
O labirinto deve girar pelo menos quatro vezes.
O labirinto deve ter paredes externas, que se partem em dois pontos: o início e o fim.
O labirinto deve consistir em um caminho ininterrupto, do início ao fim.
Por exemplo, o seguinte é um labirinto válido: ( N = 5)
+---+
| |
| | |
|
--+--
E para N = 7:
--+---+
| |
| | | |
| | | |
| | | |
| |
+---+--
Lembre-se, isso é código-golfe , portanto o código com o menor número de bytes vence.
Respostas:
Geléia ,
36 35 34 3332 bytesTryItOnline!
Constrói um nighter ™ ao contrário, com exemplos como:
Quão?
(cada byte salvo envolveu mudanças bastante não-triviais, ver o histórico de edição se você estiver interessado, embora eu só notei que Link 1 é a mesma contagem de bytes como a repetição mais convencional e junte-se:
_2⁶ẋ“ ||“|”j
)fonte
JavaScript (ES6), 86
92 116Quase um desafio de complexidade kolmogorv ...Com um pouco de pensamento lateral (inspirado na resposta de @ Neil), pode ser muito mais curto. Basta girar 90 °Teste
fonte
Lote, 216 bytes
|
s são estranhos no lote, então eurefletios exemplos rotacionados.fonte
PHP, 99 bytes
até portões baixos
PHP, 157 bytes
portões direito esquerdo
@Titus Obrigado por minializar os bytes
fonte
$p("",$c*($c-4),...)
em vez destr_repeat(...,$c-4)
(-2)$p($n,$c-1," | ")
vez de$p("\n ",$c-1," | ")
($c)%4
(-2), remover$g
do código (-1)$c=$argv[1]-1
em vez de($c=$argv[1])-1
,<=$c
em vez de<$c
e$c
em vez de$c-1
(-3)JavaScript (ES6), 87 bytes
Uma função recursiva. Gera alguns espaços à direita.
Teste
Mostrar snippet de código
fonte
Ruby 72 ou 69 bytes
Função Lambda. Como mostrado, retorna uma sequência separada por nova linha. Exclua o * $ / para retornar uma matriz de seqüências de caracteres.
Desenha um labirinto girado 90 graus dos exemplos. Para cada linha, uma sequência de formatação é selecionada (por exemplo,
+%s |
a 1ª linha (não há linha zero) e%s
é substituída por um número-
ou espaços apropriados usando o%
operador (equivalente ao sprintf, mas mais curto).fonte
Java 7, 228 bytes
Usou uma saída vertical semelhante ao @JonathanAllan resposta Jelly 's .
Ungolfed & código de teste:
Experimente aqui.
Resultado:
fonte
Given an odd integer N (5 <= N <= 51), generate a maze with side length N
. Você parece ter um top diferente e comprimento do lado inferior para seu ...Python 2, 89 bytes
repl.it
Constrói uma parede interna
x
, como'+---- |'
e um corredor internoy
, como'| |'
Em seguida, cria uma lista de
[x,y,x[::-1],y]
(x[::-1]
é o inverso dex
)Em seguida, repete esse
n
tempo de lista (como uma única lista), com*n
e trunca-a para as primeirasn
entradas, com(...)[:n]
, joins a lista com alimentações de linha, com'\n'.join(...)
e imprime o resultado.fonte
Raquete 187 bytes
Usando o padrão de exibição de @JonathanAllan
Ungolfed:
Teste:
Resultado:
fonte
GNU sed 140 bytes
Inclui +1 para -r
Experimente Online!
Recebe informações unárias ( consulte este consenso ).
Basicamente, ele insere o labirinto do tamanho 5 e, em seguida, acrescenta o segundo e o terceiro caracteres de cada linha ao início quantas vezes for necessário. Em seguida, duplica a 3ª linha (alternando
|
e) quantas vezes for necessário.
A única coisa interessante que usei é a
m
opção na linha 6, que permite^
e$
corresponde, respectivamente (além do comportamento normal), a sequência vazia após uma nova linha e a sequência vazia antes de uma nova linha.fonte
T-SQL, 123/79 bytes
Golfe:
Ungolfed:
Se você trapaceia e faz apenas um labirinto estreito, o script pode ser jogado até 79 bytes:
Golfe:
Ungolfed:
Violino para a resposta longa
fonte
JavaScript (ES6), 96 bytes
Eu esperava que a recursão acabasse sendo o caminho mais curto, e aparentemente é ...
fonte