Ou peut-être que ce n'est pas vraiment un labyrinthe, mais quand même.
Règles:
Entrée est une chaîne de deux lignes, constitué de
*
,1
,x
etX
. Cette chaîne est un labyrinthe à parcourir. Les lignes ont la même longueur .Vous pouvez prendre l'entrée comme une chaîne avec
,
(virgule) ou tout séparateur pratique entre ces deux lignes. Ou vous pouvez prendre les deux lignes comme arguments séparés pour votre fonction.La sortie est le nombre d'étapes que vous devez prendre pour quitter la chaîne (la dernière étape est l'étape qui vous fait sortir de la chaîne).
Vous commencez dans le coin supérieur gauche (la ligne supérieure), avant le premier symbole.
Pour chaque étape, vous avancez d'un symbole (de la nième à la (n + 1) ème position ). Ensuite, selon le personnage sur lequel vous marchez, le résultat est différent. Voici ce que fait chaque personnage:
*
- rien. Vous marchez simplement dessus normalement.x
- une fois que vous avez marché dessus, changez de ligne, mais restez sur la même distance horizontale depuis le début. Par exemple, vous avez marché sur la troisième position de la ligne supérieure et rencontré un minusculex
ici. Ensuite, vous passez immédiatement à la ligne inférieure, mais à nouveau à la troisième position.X
- changez de ligne et passez à la position suivante. L'exemple est le même là-bas, mais vous passez également de la troisième à la quatrième position (vous êtes donc sur la deuxième ligne à la quatrième position).1
- avancez simplement d'une autre position.
Une fois que chaque personnage fait son travail, il est remplacé par un espace et ne fonctionne plus.
Des exemples suivent.
Entrée :
x *
Comme dit précédemment, vous commencez avant le premier symbole de la première ligne. La première étape vous déplace sur la lettre
x
et cette lettre vous fait passer à la deuxième ligne. La lettrex
ne fonctionne plus commex
, mais remplacée par*
. Cela sera plus pertinent dans les derniers exemples. Vous êtes maintenant sur un astérisque sur la ligne inférieure, et cela ne vous a rien fait.La deuxième étape vous fait avancer et vous quittez la chaîne, donc le labyrinthe est terminé et il a fallu 2 étapes.
Sortie
2
.Entrée :
xX* x1*
1ère étape : vous continuez
x
, ce qui vous déplace sur lax
ligne inférieure. Voici la règle qui dit que le caractère utilisé est remplacé par un astérisque. Ensuite, vous revenez sur la première ligne, mais elle n'est plusx
là, car elle a été utilisée et est devenue un astérisque. Vous vous déplacez donc en toute sécurité sur cet astérisque et l'étape est terminée (vous êtes maintenant en première position de la première ligne).2ème étape : vous avancez
X
, cela vous pousse vers la ligne inférieure puis vous pousse vers l'avant. Vous résidez maintenant sur la troisième position de la deuxième ligne (astérisque), n'ayant jamais visité la deuxième position (qui contient1
).3ème étape : vous avancez en sortant de la chaîne.
Sortie :
3
.
Cas de test:
Contribution:
*1* xxx
Sortie:
3
. (car1
vous fait sauter sur la troisième position). Là, vous ne visitez jamais la deuxième ligne, mais c'est une partie obligatoire de l'entrée.Contribution:
*X*1*x x*1xx*
Sortie:
4
.Contribution:
1x1x ***X
Production:
3
.Contribution:
1*x1xxx1*x x*x1*11X1x
Production:
6
.Contribution:
xXXXxxx111* **xxx11*xxx
Sortie:
6
.
la source
"\n\n"
est une chaîne de deux lignes ...1
, comme vous commencez avant la 1ère ligne, puis vous avancez d'un pas, puis vous terminez le labyrinthe ...Réponses:
Escargots, 34 octets
Étendu:
Pour un chemin qui prend N étapes, le programme trouve une correspondance réussie pour chaque traversée de 0 étapes, 1 étapes, ..., N - 1 étapes.
la source
Haskell,
686665 octetsLa fonction
#
prend les deux lignes comme paramètres séparés. Exemple d'utilisation:"1x1x" # "***X"
->3
.Il suffit de compter les étoiles
*
sur lesquelles nous marchons plus 1 pour partir.Modifier: @feersum a enregistré un octet. Merci!
la source
a>'a'
au lieu dea=='x'
?JavaScript (ES6), 119
Moins golfé
Tester
la source
TSQL (sqlserver 2012+), 276 octets
Golfé:
Non golfé:
Violon
la source
JavaScript, 211 octets
Je pense à créer une version qui montre chaque étape jouée l'une après l'autre, affichée sur une page Web.
Utilisé plus d'octets que je ne l'aurais espéré lors du remplacement
x
à*
cause de JS immuableStrings
. Les suggestions d'amélioration sont appréciées, en particulier avec la pièce de rechange.la source