Choisissez vos propres livres d'aventure sont une forme de littérature interactive où le lecteur doit prendre des décisions qui affectent le résultat de l'histoire. À certains moments de l'histoire, le lecteur a plusieurs options qui peuvent être choisies, chacune envoyant le lecteur vers une page différente du livre.
Par exemple, dans un cadre fantastique, on pourrait avoir à décider à la page 14 s'il faut s'aventurer dans une grotte mystérieuse en "sautant" à la page 22, ou pour explorer la forêt voisine en sautant à la page 8. Ces "sauts" peuvent être exprimés sous forme de paires de numéros de page, comme ceci:
14 22
14 8
Dans la plupart des cas, il y a de nombreuses fins à l'histoire, mais seulement quelques bonnes. L'objectif est de naviguer dans l'histoire pour arriver à une bonne fin.
Tâche:
Étant donné une liste de «sauts» pour un livre donné, votre tâche est de déterminer un itinéraire qui mènera à une fin spécifique. Comme c'est assez facile, le vrai défi est de le faire avec le moins de caractères possible.
C'est le golf de code .
Exemple d'entrée (où 1 est le début et 100 est l'objectif):
1 10
10 5
10 13
5 12
5 19
13 15
12 20
15 100
Exemple de sortie:
1 10 13 15 100
Exemple d'entrée:
15 2
1 4
2 12
1 9
3 1
1 15
9 3
12 64
4 10
2 6
80 100
5 10
6 24
12 80
6 150
120 9
150 120
Exemple de sortie:
1 15 2 12 80 100
Remarques:
- La liste des sauts sera saisie par l'utilisateur, soit à partir d'un fichier, soit de stdin. Vous pouvez choisir celui qui vous convient le mieux.
- L'entrée contiendra 1 saut par ligne, avec l'origine et la destination séparées par un seul espace.
- Il n'est pas garanti que les lignes de l'entrée soient dans un ordre spécifique.
- Un chemin réussi commencera à la page 1 et se terminera à la page 100.
- Vous pouvez supposer qu'il existe au moins 1 chemin vers l'objectif. Vous n'avez pas besoin de trouver tous les chemins, ni de trouver le plus court. Trouvez-en au moins un.
- Le plus petit numéro de page sera 1. Il n'y a pas de limite au plus grand numéro de page. (Vous pouvez supposer qu'il rentrera dans la plage d'un int.)
- Des boucles peuvent exister. Par exemple, la liste peut contenir des sauts des pages 5 à 10, 10 à 19 et 19 à 5.
- Il peut y avoir des impasses. Autrement dit, une page de destination peut ne pas avoir de destination.
- Inversement, il peut y avoir des pages inaccessibles. Autrement dit, une page d'origine peut ne pas être la destination de sauts.
- Tous les numéros de page entre 1 et 100 ne sont pas garantis pour être utilisés.
- Votre sortie doit consister en un itinéraire valide de numéros de page, commençant par 1 et se terminant à 100, séparés par des espaces.
N'oubliez pas qu'il s'agit de code golf, donc la solution la plus courte l'emporte!
EDIT: Ajout d'un autre échantillon pour les tests.