Écrivez un programme ou une fonction qui prend un entier positif N (via stdin / ligne de commande / fonction arg) et imprime ou retourne une représentation sous forme de chaîne d'une marche aléatoire bidimensionnelle de N pas de longueur, tirée de barres obliques: /
\
(plus les espaces et nouvelles lignes pour l'espacement).
Une marche aléatoire 2D commence à l'origine d'un réseau entier infini . Puis N fois de façon répétée, une direction cardinale (haut, bas, gauche, droite) est choisie uniformément au hasard et le promeneur se déplace d'une unité dans cette direction. Le chemin résultant est la marche aléatoire.
Voici une marche aléatoire pour N = 6. Notez qu'il revient sur lui-même lorsqu'il atteint (-1, 3).
Pour dessiner cela avec des barres obliques, nous devons essentiellement faire pivoter le tout à 45 ° dans le sens horaire. Les axes et les points de début et de fin ne sont pas dessinés dans la version barre oblique.
/
\
\
/\
Une marche plus complexe comme celle-ci (N = 20, bien qu'il n'y ait aucun moyen de le dire):
Deviendrait ceci:
/
/\/ /\
\/\/
/\/
\/
Votre programme doit générer ce type de versions slash de promenades aléatoires. Vous devez choisir au hasard chaque nouvelle direction prise par la marche, de sorte que chaque exécution du programme pour un certain N produira presque certainement une marche différente. (La pseudo-aléatoire est très bien.)
Il ne doit jamais y avoir de lignes vides au-dessus ou en dessous des barres obliques les plus basses et les plus élevées (à l'exception d'une nouvelle ligne de fin facultative), et il ne doit jamais y avoir de colonnes d'espaces vides avant ou après les barres obliques les plus à gauche et à droite.
Donc pour N = 1, la sortie est toujours /
ou \
, mais jamais quelque chose comme:
/
Les espaces de fin sont autorisés tant qu'ils ne dépassent pas la colonne de la barre oblique la plus à droite.
La soumission avec le moins d'octets est gagnante. Voici un compteur d'octets pratique.