Meine Heimatstadt Rhyl verfügt über ein Einbahnstraßensystem, das anscheinend so konzipiert ist, dass die Menschen so lange wie möglich von ihrem Ziel ferngehalten werden. Ihre Aufgabe ist es, ein Programm zu erstellen, das den kürzesten Weg durch ein solches Verkehrssystem bietet, falls Sie es versuchen möchten.
Eingang
Die Eingabe ist aktiviert STDIN
und enthält eine Liste der Start- und Endpunkte, gefolgt von einer leeren Zeile gefolgt von einer Liste der Abfragen wie folgt:
A B
B A
B C
C D
D C
A D
C A
B A
Jede Straße kann nur in der / den angegebenen Richtung (en) befahren werden. Im obigen Beispiel ist die Straße A - B eine Einbahnstraße, während B - C eine Einbahnstraße von B nach C ist. Fahren von C nach B. ist verboten.
Start- und Endpunkte werden alle durch einen einzigen Großbuchstaben dargestellt.
Ausgabe
Die Ausgabe sollte für jede empfangene Abfrage die kürzeste Route (gemessen an der Anzahl der besuchten Punkte) vom angegebenen Startpunkt zum angegebenen Endpunkt sein. Wenn keine solche Route vorhanden ist, geben Sie eine leere Zeile aus. Wenn mehr als eine kürzeste Route vorhanden ist, geben Sie die erste aus, wenn Sie alle kürzesten Routen lexikografisch sortieren.
Für das obige Beispiel wäre die Ausgabe:
A B C D
B A
Testskripte
Nach wie vor biete ich Tests für diese Aufgabe an, die auf Skripten von Joey und Ventero basieren : -
und auch Tests und erwartete Ausgabe für alle, die die oben genannten Skripte nicht verwenden können
Verwendungszweck: ./test [your program and its arguments]
Belohnung
Alle Antworten, bei denen offensichtlich versucht wurde, Golf zu spielen, die der Spezifikation entsprechen und alle Tests bestehen, werden positiv bewertet. Die kürzeste Arbeitsantwort bis zum 26.01.2012 wird akzeptiert.
quelle
output the first when sorting all shortest routes lexicographically
- Also , wennA B D
undA C D
sind beide gültigen Lösungen, AusgabeA B D
statt?Antworten:
Haskell,
223207 Zeichenquelle
Python (2.x),
382369358338323318 ZeichenAlle Tipps und Kommentare sind willkommen!
Sollte die Tests in dieser Form bestehen. Feed-Eingabe über stdin, z
python shortestroute.py < test.txt
.quelle
A B I J M
statt zurückA B G J M
.C:
450,437,404, 390 Zeichenquelle
puts("\n")
druckt zwei Zeilenumbrüche.puts()
Fügt den gedruckten Zeichenfolgen automatisch einen Zeilenende-Terminator hinzu. Um dieses Verhalten zu vermeiden, verwenden Siefputs(str, stdout)
oder einfachprintf(str)
.