Alphys, le scientifique royal du métro, a terminé un prototype pour un nouveau puzzle. Cependant, elle ne semble pas trouver quelqu'un prêt à le tester.
Les règles de son puzzle sont les suivantes:
Le but est d'arriver sur le côté droit, en commençant par la tuile la plus centrale sur le côté gauche. Pour les puzzles avec des hauteurs paires, commencez par le bas des deux tuiles centrales. (Exemples: dans un tableau 4x4 indexé zéro, la position de départ serait [2,0] - ligne 2, colonne 0. Dans un tableau 5x5 indexé zéro, la position de départ serait [2,0] - ligne 2, colonne 0.)
Chaque tuile colorée a sa propre fonction "sadique":
- Les carreaux roses et verts (représentés par "P" et "G") ne font rien
- Les tuiles rouges et jaunes ("R", "Y") sont infranchissables.
- Les tuiles orange ("O") font sentir au joueur des oranges
- Les tuiles violettes ("U") forcent le joueur à la tuile suivante dans la direction à laquelle elles sont confrontées et les font sentir comme des citrons
- Les tuiles bleues ("B") sont passables tant que le joueur ne sent pas comme les oranges.
Pour clarifier le mécanisme de saveur, l'odeur d'un joueur persistera indéfiniment ou jusqu'à ce qu'elle soit remplacée par une tuile à odeur différente, c'est-à-dire que si un joueur marche sur une tuile orange, il sentira comme des oranges jusqu'à ce qu'il marche sur une tuile violette.
De plus, une tuile jaune placée verticalement ou horizontalement à côté d'une tuile bleue rendra également la tuile bleue impraticable.
Votre tâche consiste à écrire un programme ou une fonction qui accepte un tableau de caractères à 2 dimensions (ou un tableau de chaînes 1D, ou un autre format valide) représentant la disposition du puzzle en entrée et génère à la fois le puzzle d'origine et le puzzle résolu, avec des astérisques ou certains autre personnage montrant le chemin correct. Supposons que le puzzle donné soit résoluble.
Utilisez ce puzzle comme exemple:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
Votre programme afficherait:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
BGYBG
PGPBG
*****
OUGYB
PPOPP
Tout puzzle utilisé doit être généré à l'aide de cela .
Les règles de golf du code standard s'appliquent. Les meilleures réponses seront les plus courtes pour chaque langue. Les réponses doivent contenir la langue, le nombre d'octets et trois cas de test. Les deux premiers peuvent être n'importe quelle mise en page que vous choisissez, mais le troisième doit être:
RRRR
RPPR
PUOR
RPBP
la source
Réponses:
C 529 octets
Nous approchons du puzzle en faisant un premier pas vers la droite, à condition de ne pas être bloqués, puis en essayant, puis en descendant et enfin de nouveau à gauche. La recherche est récursive et une fois que nous avons identifié un chemin réussi, nous marquons les espaces dans notre matrice et revenons.
Essayez-le en ligne
Non golfé
Exemple de sortie 1
Exemple de sortie 2
Exemple de sortie 3
la source