Étant donné un entier impair N (5 <= N <= 51), générez un labyrinthe de longueur latérale N qui respecte les exigences suivantes:
Le labyrinthe doit être composé des personnages
|
-
et +
. Il doit utiliser le |
personnage comme un mur vertical, le -
personnage comme un mur horizontal, et si ce mur tourne, le personnage +
doit être utilisé.
La largeur du chemin doit être d'un caractère.
Le labyrinthe doit tourner au moins quatre fois.
Le labyrinthe doit avoir des murs extérieurs qui se cassent en deux points: le début et la fin.
Le labyrinthe doit consister en un chemin incassable, du début à la fin.
Par exemple, ce qui suit est un labyrinthe valide: ( N = 5)
+---+
| |
| | |
|
--+--
Et pour N = 7:
--+---+
| |
| | | |
| | | |
| | | |
| |
+---+--
N'oubliez pas qu'il s'agit de code-golf , donc le code avec le moins d'octets gagne.
Réponses:
Gelée ,
36 35 34 3332 octetsTryItOnline!
Construit un nighter ™ à l'inverse des exemples comme:
Comment?
(chaque octet impliqué des changements assez épargné non triviales, voir l'historique des modifications si vous êtes intéressé, bien que je viens de remarquer que Link 1 est le nombre d'octets même que la répétition plus classique et rejoindre:
_2⁶ẋ“ ||“|”j
)la source
JavaScript (ES6), 86
92 116Presque un défi de complexité kolmogorv ...Avec un peu de réflexion latérale (inspirée de la réponse de @ Neil), il peut être très court. Il suffit de tourner à 90 °Tester
la source
Lot, 216 octets
|
s sont maladroits dans Batch, j'ai doncréfléchi à larotation des exemples.la source
PHP, 99 octets
portes de haut en bas
PHP, 157 octets
portes gauche droite
@Titus Merci d'avoir minialisé les octets
la source
$p("",$c*($c-4),...)
au lieu destr_repeat(...,$c-4)
(-2)$p($n,$c-1," | ")
au lieu de$p("\n ",$c-1," | ")
($c)%4
(-2), supprimer$g
du code (-1)$c=$argv[1]-1
au lieu de($c=$argv[1])-1
,<=$c
au lieu de<$c
et$c
au lieu de$c-1
(-3)JavaScript (ES6), 87 octets
Une fonction récursive. Génère quelques espaces de fin.
Tester
Afficher l'extrait de code
la source
Ruby 72 ou 69 octets
Fonction lambda. Comme indiqué, renvoie une chaîne séparée par des sauts de ligne. Supprimez * $ / pour renvoyer un tableau de chaînes.
Dessine un labyrinthe tourné de 90 degrés à partir des exemples. Pour chaque ligne, une chaîne de format est sélectionnée (par exemple
+%s |
pour la 1ère ligne (il n'y a pas de ligne zéro) et la%s
est remplacée par un nombre approprié d'-
espaces ou utilisant l'%
opérateur (équivalent à sprintf, mais plus court.)la source
Java 7, 228 octets
Utilisé une sortie verticale similaire à la réponse Jelly de @JonathanAllan .
Code non testé et testé:
Essayez-le ici.
Production:
la source
Given an odd integer N (5 <= N <= 51), generate a maze with side length N
. Vous semblez avoir une longueur de côté supérieure et inférieure différente pour la vôtre ...Python 2, 89 octets
repl.it
Construit un mur interne
x
, comme'+---- |'
et un couloir interney
, comme'| |'
Puis construit une liste de
[x,y,x[::-1],y]
(x[::-1]
est l'inverse dex
)Puis répète cette liste
n
fois (comme une seule liste), avec*n
et la tronque aux premièresn
entrées, avec(...)[:n]
, jointures la liste avec les sauts de ligne, avec'\n'.join(...)
et imprime le résultat.la source
Raquette 187 octets
Utilisation du modèle d'affichage par @JonathanAllan
Non golfé:
Essai:
Production:
la source
GNU sed 140 octets
Comprend +1 pour -r
Essayez-le en ligne!
Prend la contribution en unaire ( voir ce consensus ).
Fondamentalement, il insère le labyrinthe de taille 5, puis ajoute le deuxième et le troisième caractère de chaque ligne au début autant de fois que nécessaire. Duplique ensuite la 3e ligne (en alternance
|
et) autant de fois que nécessaire.
La seule chose intéressante que j'ai utilisée est l'
m
option sur la ligne 6 qui permet^
et fait$
correspondre respectivement (en plus du comportement normal) la chaîne vide après une nouvelle ligne, et la chaîne vide avant une nouvelle ligne.la source
T-SQL, 123/79 octets
Golfé:
Non golfé:
Si vous trichez et ne faites qu'un étroit labyrinthe, le script peut être joué jusqu'à 79 octets:
Golfé:
Non golfé:
Violon pour la réponse longue
la source
JavaScript (ES6), 96 octets
J'espérais que la récursivité serait la voie la plus courte, et apparemment c'est ...
la source