Herr Jones möchte mit seinem Fahrrad eine Rundreise machen. Er möchte mehrere Städte in beliebiger Reihenfolge besuchen, aber seine Route darf sie nicht selbst kreuzen, da er es hasst, in seinen Ferien zweimal am selben Ort zu sein. Da er sehr gerne Rad fährt, spielt die Länge seiner Strecke keine Rolle, aber er mag es nicht, ohne Ziel durch die Landschaft zu fahren. Die Route, die er mag, führt von einer Stadt in einer geraden Linie zu einer anderen, ohne Umwege.
Da Herr Jones ein leidenschaftlicher Code-Golfer ist, möchte er, dass Sie ein Programm finden, das für ihn eine Rundreise in einer Reihe von Städten plant. Die Eingabe hat die Form A (B|C)
. A
ist der Name einer Stadt B
und C
sind ihre Koordinaten. Sie können davon ausgehen, dass die Koordinaten positiv und kleiner als 1000 sind. Die Datensätze für die Städte sind durch Linien getrennt. Hier ist ein Beispiel, wie eine Beispieleingabe aussehen könnte:
SomeTown (1 | 10) ACity (3 | 4) Wo auch immer (7 | 7) Zuhause (5 | 1)
Herr Jones ist nicht pedantisch, er möchte nur ein nützliches Programm haben. Auf diese Weise können Sie selbst entscheiden, wie die Ausgabe aussehen soll, sofern die folgenden Kriterien erfüllt sind:
- Die Ausgabe ist eine Karte der Städte, zwischen denen die Route eingezeichnet ist. Wenn etwas richtig ist, sollte sich die Route nicht überlappen und dort enden, wo sie begonnen hat
- Die Koordinaten sind wie bei der normalen Programmierung: (1 | 1) befindet sich in der NW-Ecke. Fügen Sie dem Kartenrand eine Art Lineal hinzu, um das Lesen zu erleichtern
- Die Städtenamen müssen auf der Karte vermerkt sein. Sie können jedoch auch Abkürzungen verwenden, die an einer anderen Stelle auf der Karte erläutert werden
- Die Karte kann sowohl eine ASCII-Grafik als auch ein Bild sein
- Halten Sie die Ausgabe lesbar
Eine Ausgabe könnte folgendermaßen aussehen:
1234567 1 D 2 * * 3 * * 4 B * 5 * * 6 * * 7 * C 8 * ** 9 * * 10 A** A: SomeTown B: ACity C: Wo auch immer D: Zuhause
Das Programm mit der geringsten Zeichenanzahl gewinnt. Ich zähle keine Parameter für den Compiler / Interpreter, wenn sie zum Kompilieren benötigt werden, aber bitte missbrauchen Sie diese Regel nicht. Es gelten die üblichen Golfregeln.
Hier ist ein weiterer Testfall. Ihre Ausgabe muss weder meiner entsprechen, noch müssen Sie denselben Pfad wie ich wählen. Die Ausgabe wird von Hand gezeichnet und zeigt eine mögliche Ausgabe. Eingang:
Zuhause (5 | 7) Supermarkt (13 | 12) Park (15 | 5) neuer Platz (9 | 16) Haus eines Freundes (20 | 11) altes schloss (14 | 21) Flussufer (1 | 20) Strand (10 | 1) Kino (21 | 18) Wald (23 | 7) kleine Insel (21 | 1) Museum für Code-Golf (6 | 25) Flughafen (18 | 25) Teestube (24 | 14) Restaurant (24 | 22) große Brücke (3 | 12) SO Gebäude (25 | 9)
Und dies ist eine Beispielausgabe:
1111111111222222 1234567890123456789012345 1 H * * K 2 * * * * 3 * * * * 4 * * ** * 5 * C * 6 * * 7 AJ 8 * * 9 * Q 10 * * 11 * *** E * 12 PB *** * * 13 * * * * 14 * * * N 15 * * * * 16 * D * * 17 * * * * 18 * * I * 19 * * * * 20G * * * 21 * F * * 22 * ** * O 23 * ** * ** 24 * ** * * 25 L ** M ** Ein Zuhause B: Supermarkt C: park D: neuer Platz E: Haus eines Freundes F: altes Schloss G: Flussufer H: Strand Ich: Kino J: Wald K: kleine Insel L: Museum für Code-Golf M: Flughafen N: Teeladen O: Restaurant P: tolle Brücke F: SO Gebäude
Ich bin kein englischer Muttersprachler. Gerne können Sie meine Sprache und Grammatik bei Bedarf korrigieren.
Haskell, 633 Zeichen
Eher langwierig für Code-Golf, erzeugt aber eine schöne SVG-Karte:
Oder, falls Ihr Browser SVG nicht unterstützt, eine PNG des Bildes:
viewBox
; auch ein paar golf-tricks hier und da.quelle
Python,
516476 Bytes(Hinweis: Ich habe die ersten beiden Zeilen nicht in die Byteanzahl aufgenommen, sondern als "Interpreter-Parameter" betrachtet. Ich habe mir jedoch die utf-8-Länge des Programms in Bytes berechnet.)
An Ihrem zweiten Beispiel zeige ich:
Ja, Unicode-Glyphen!
quelle
Python, 1074 Bytes
Ok, viel zu viele Bytes (und zu viel Zeit) damit verbracht, vernünftige Wege zur Arbeit zu finden.
Macht aber schöne Wege:
und
quelle