Wichtige Änderung: Früher gab es in Beispiel 1 einen falschen Wert. Dieser wurde behoben.
Sie erhalten ein zweidimensionales Array, in dem jede Zelle einen von vier Werten enthält.
Beispiele:
1 2 2 2 2 1 @ . . X X V
1 3 1 4 1 4 e . @ I C V
2 3 1 3 4 2 H H @ X I V
1 4 4 2 1 3 V C C
2 2 2 3 2 3 X X X
Die vier Werte stehen für Richtungspfeile (nach oben, unten, links und rechts), obwohl Sie nicht wissen, welcher Wert welche Richtung darstellt.
Die Richtungspfeile bilden einen ununterbrochenen Pfad, der jede Zelle im Array enthält, obwohl Sie nicht wissen, wo sich die Start- oder Endpunkte befinden.
Schreiben Sie einen Code, der bestimmt, welche Richtung jeder der vier Werte darstellt und wo sich die Start- und Endpunkte befinden.
Ein akzeptabler Rückgabewert für ein Array, das die Werte A, B, C und D enthält, wäre etwa:
{ up: A, down: C, left: D, right: B, start: [2, 0], end: [4, 2] }
Da Sie den Pfad in beide Richtungen durchlaufen können (von Anfang bis Ende und von Ende bis Anfang), gibt es immer mehr als eine richtige Lösung und möglicherweise mehr als zwei. Angenommen, die Eingaben, die Sie erhalten (wie in den obigen Beispielen), haben immer mindestens eine richtige Lösung. In Fällen, in denen es mehr als eine richtige Lösung gibt, ist es ausreichend, nur eine der richtigen Lösungen zurückzugeben.
Der kürzeste Code gewinnt. Ich werde den Gewinner nach 7 Tagen oder 24 Stunden ohne neue Einreichung auswählen, je nachdem, was zuerst eintritt.
Ich füge Lösungen zu den obigen Beispielen hinzu, aber ich möchte Sie ermutigen, diese erst zu überprüfen, wenn Sie Ihren Code geschrieben haben:
Einer:
{up: 3, down: 1, left: 4, right: 2, start: [0,0], end: [2,5]}
Zwei:
{up: '@', down: 'e', left: '.', right: 'H', start: [1,1], end: [0,0]}
Drei:
{hoch: 'I', runter: 'V', links: 'C', rechts: 'X', Anfang: [0,2], Ende: [4,2]}
Antworten:
C #
BEARBEITEN: Eine Unterteilung und Formatierung wurde behoben. Und fügte die Helferklasse hinzu.
Dies ist der Golfcode, 807 Zeichen
Ergebnisse für die drei Testfälle:
Dies ist der Rohcode ohne "Golf", fast 4.000 Zeichen:
Dies sind die Ergebnisse für die drei Beispiele:
quelle
Mathematica 278
Leerzeichen für "Klarheit" hinzugefügt
Sitzung & Ausgabe:
Welches ist der Startvertex, Endvertex und die Übergangsregeln, die jedem Symbol zugeordnet sind.
Hier ist der ergänzende Code zur Darstellung des orientierten Diagramms:
quelle
Mathematica (151)
Es werden Startpunkt-, Endpunkt- und Übergangsregeln zurückgegeben. Der erste Index ist Zeile, der zweite ist Spalte
Beachten Sie, dass mein Code auch mit funktioniert
{-1,0,1}~Tuples~{4,2}
. Zum Beschleunigen können SiePermutations@{{1, 0}, {0, 1}, {-1, 0}, {0, -1}}
stattdessen verwenden.quelle
APL (207)
Ich konnte es nicht kürzer als Mathematica machen, weil ich nicht in Bezug auf TopologicalSort und so weiter argumentieren konnte. Klügere Leute sind herzlich eingeladen, es weiter zu drücken.
Golf:
Ungolfed:
Beispiele:
(Indizes beginnen bei 1)
quelle