Sie erhalten einen Satz willkürlicher, eindeutiger, 2d ganzzahliger kartesischer Koordinaten: zB [(0,0), (0,1), (1,0)]
Finden Sie aus diesem Satz von Koordinaten den längsten möglichen Pfad, mit der Einschränkung, dass eine Koordinate nur einmal "besucht" werden kann. (Und Sie "kommen" nicht zu der Koordinate zurück, bei der Sie angefangen haben).
Wichtig:
Sie können eine Koordinate oder deren Umgebung nicht "überfahren". Zum Beispiel können Sie im letzten Notenbeispiel (Rechteck) nicht von D nach A wechseln, ohne C zu besuchen (was ein erneuter Besuch sein kann und die so gefundene Länge ungültig macht). Dies wurde von @FryAmTheEggman darauf hingewiesen.
Funktionseingabe: Array von 2d kartesischen Koordinaten.
Funktionseingabe: Nur maximale Länge.
Gewinner: Kürzester Code gewinnt, kein Halten ausgeschlossen (nicht der platzsparendste).
Beispiele
1 : In diesem oben gezeigten Fall ist der längste Pfad ohne zweimal "besuchte" Koordinate A -> B -> O (oder OBA oder BAO) und die Pfadlänge ist sqrt (2) + 1 = 2,414
2 : In diesem oben gezeigten Fall ist der längste Pfad ohne zweimal "besuchte" Koordinate ABOC (und offensichtlich COBA, OCAB usw.), und für das gezeigte Einheitsquadrat wird zu sqrt (2) + sqrt (2) + gerechnet 1 = 3,828.
Hinweis: Hier ist ein zusätzlicher Testfall, der nicht so einfach ist wie die beiden vorherigen Beispiele. Dies ist ein Rechteck aus 6 Koordinaten:
Hier ist der längste Pfad: A -> E -> C -> O -> D -> B, der 8.7147 beträgt
(maximal mögliche Diagonalen und keine überquerten Kanten)
quelle
Antworten:
Pyth,
1051031009286 BytesProbieren Sie es hier aus!
quelle
Mathematica, 139 Bytes
Testfall
quelle
Perl,
341322318 BytesDer Code unterstützt bis zu 100 Punkte. Da alle möglichen Punktpermutationen erzeugt werden, benötigen 100 Punkte mindestens 3,7 × 10 134 Yottabyte Speicher (12 Punkte benötigen 1,8 GB).
Kommentiert:
Testfälle:
$"
, und einige Inliningsquelle