Le roi Julian doit traverser la jungle, mais il se sent paresseux. Il veut qu'un ordinateur puisse lui calculer un itinéraire à travers la jungle.
En utilisant STDIN, obtenez une carte de la jungle pour que l'ordinateur se fissure. Il suivra le format suivant:
01001E
010110
000P00
1100J1
S00111
Le fonctionnement de la carte de la jungle est le suivant:
0
est un terrain sur lequel Julian peut se déplacer.
1
est une jungle dense infranchissable.
P
est une zone avec des prédateurs, que vous devez éviter à tout prix.
J
est une jungle relativement épaisse. Les serviteurs de Julian peuvent percer l'un d'eux avant de se fatiguer.
S
c'est là que Julian commence. Cela peut être n'importe où sur la carte.
E
est où Julian veut aller; la fin du chemin. Il peut également être n'importe où sur la carte, comme n'importe quelle autre tuile.
Chaque personnage est une tuile sur la carte. Les sauts de ligne indiquent une nouvelle rangée de tuiles. Si STDIN dans votre langue ne prend pas en charge les sauts de ligne, le saut de ligne doit être remplacé par un espace pour signifier une nouvelle ligne.
Pour vous déplacer entre les tuiles, vous devez sortir une chaîne en utilisant STDOUT contenant les caractères spéciaux suivants:
F
- Vers l'avant
B
- En arrière
L
- Tourner Julian vers la gauche (90 degrés dans le sens antihoraire)
R
- Tourner Julian à droite (90 degrés dans le sens des aiguilles d'une montre)
M
- Les serviteurs détruisent une J
tuile 1 tuile en avant de Julian, s'il y en a une ( M
efface simplement la tuile, vous devez toujours y passer)
Une sortie possible serait:
RFFLFRFMFLFRFLFF
Ce qui résout la carte ci-dessus.
Remarques:
Si votre programme génère une solution qui frappe les prédateurs, game over.
Si vous frappez une jungle infranchissable, vous rebondissez simplement là où vous étiez avant de vous heurter à une jungle dense, face à la même manière. (Vers la jungle)
Julian commence à faire face vers le haut. (^ De cette façon ^)
La sortie ne doit pas nécessairement être la solution la plus rapide
FFF
etFBFBFBFBFBFFF
est la même. Cependant, la sortie de la solution la plus rapide possible donne un bonus de décompte de -10%.Si une carte n'est pas valide, STDOUT «Carte non valide». (Cela inclut si la carte est insoluble)
Une carte ne peut pas avoir de lignes ou de colonnes de longueurs différentes; cela le rend invalide.
Votre réponse devrait quelque peu suivre ce format:
#Language name, *n* bytes
code
Explanation (optional)
Il s'agit de code-golf , donc le code le plus court en octets l'emporte.
P
tuile ajoute- t-elle vraiment quelque chose de différent d'une1
tuile? Je ne peux pas vraiment imaginer une solution plausible qui les traite différemment.Réponses:
Groovy, 656 octets
C'était trop long ...
Sortie pour le labyrinthe:
Non golfé:
Je vais essayer de nouveau cela en python bientôt pour voir si je peux le raccourcir davantage.
la source