Choose Your Own Adventure-Bücher sind eine Form interaktiver Literatur, bei der der Leser Entscheidungen treffen muss, die sich auf das Ergebnis der Geschichte auswirken. An bestimmten Stellen in der Geschichte stehen dem Leser mehrere Optionen zur Verfügung, von denen jede den Leser auf eine andere Seite im Buch weiterleitet.
In einer Fantasy-Umgebung muss man sich beispielsweise auf Seite 14 entscheiden, ob man sich in eine mysteriöse Höhle wagt, indem man zu Seite 22 "springt" oder den nahe gelegenen Wald erkundet, indem man zu Seite 8 springt. Diese "Sprünge" können ausgedrückt werden als Seitenzahlenpaare, wie folgt:
14 22
14 8
In den meisten Fällen gibt es viele Enden der Geschichte, aber nur wenige gute. Das Ziel ist es, durch die Geschichte zu navigieren, um ein gutes Ende zu erreichen.
Aufgabe:
Mit einer Liste von "Sprüngen" für ein bestimmtes Buch müssen Sie eine Route ermitteln, die zu einem bestimmten Ende führt. Da dies ziemlich einfach ist, besteht die wahre Herausforderung darin, so wenig Zeichen wie möglich zu verwenden.
Das ist Code Golf .
Beispieleingabe (wobei 1 der Anfang und 100 das Ziel ist):
1 10
10 5
10 13
5 12
5 19
13 15
12 20
15 100
Beispielausgabe:
1 10 13 15 100
Beispieleingabe:
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
Beispielausgabe:
1 15 2 12 80 100
Anmerkungen:
- Die Liste der Sprünge wird vom Benutzer entweder aus einer Datei oder von stdin eingegeben. Sie können wählen, was am bequemsten ist.
- Die Eingabe enthält 1 Sprung pro Zeile, wobei Ursprung und Ziel durch ein einzelnes Leerzeichen getrennt sind.
- Es wird nicht garantiert, dass sich die Zeilen in der Eingabe in einer bestimmten Reihenfolge befinden.
- Ein erfolgreicher Pfad beginnt auf Seite 1 und endet auf Seite 100.
- Sie können davon ausgehen, dass mindestens 1 Pfad zum Ziel vorhanden ist. Sie müssen nicht alle Pfade finden und auch nicht die kürzesten. Finde einfach mindestens einen.
- Die kleinste Seitenzahl ist 1. Die größte Seitenzahl ist unbegrenzt. (Sie können davon ausgehen, dass es in den Bereich eines Int. Passt.)
- Möglicherweise sind Schleifen vorhanden. Beispielsweise kann die Liste Sprünge von Seite 5 bis 10, 10 bis 19 und 19 bis 5 aufweisen.
- Es kann Sackgassen geben. Das heißt, auf eine Zielseite kann möglicherweise nirgendwo gesprungen werden.
- Umgekehrt sind möglicherweise nicht erreichbare Seiten vorhanden. Das heißt, eine Ursprungsseite ist möglicherweise nicht das Ziel von Sprüngen.
- Es wird garantiert, dass nicht alle Seitenzahlen zwischen 1 und 100 verwendet werden.
- Ihre Ausgabe sollte aus einer gültigen Route von Seitenzahlen bestehen, die mit 1 beginnen und mit 100 enden, getrennt durch Leerzeichen.
Denken Sie daran, dies ist Codegolf, also gewinnt die kürzeste Lösung!
BEARBEITEN: Ein weiteres Beispiel zum Testen hinzugefügt.