On vous fournit un ensemble de coordonnées cartésiennes arbitraires, uniques, 2D: par exemple [(0,0), (0,1), (1,0)]
Trouvez le chemin le plus long possible à partir de cet ensemble de coordonnées, avec la restriction qu'une coordonnée ne peut être "visitée" qu'une seule fois. (Et vous ne "revenez" pas aux coordonnées à partir desquelles vous avez commencé).
Important:
Vous ne pouvez pas "passer" sur une coordonnée ou autour d'elle. Par exemple, dans le dernier exemple de note (Rectangle), vous ne pouvez pas passer de D à A sans visiter C (ce qui peut être une nouvelle visite, invalidant la longueur ainsi trouvée). Cela a été souligné par @FryAmTheEggman.
Entrée de fonction: tableau de coordonnées cartésiennes
2D Sortie de fonction: longueur maximale uniquement
Gagnant: le code le plus court gagne, aucune restriction n'est imposée (pas le plus efficace en termes d'espace-temps)
Exemples
1 : Dans ce cas ci-dessus, le chemin le plus long sans coordonnées "visitées" deux fois est A -> B -> O (ou OBA, ou BAO), et la longueur du chemin est sqrt (2) + 1 = 2.414
2 : Dans ce cas illustré ci-dessus, le chemin le plus long sans coordonnées "visitées" deux fois est ABOC (et évidemment COBA, OCAB etc.), et pour le carré unitaire affiché, il calcule en sqrt (2) + sqrt (2) + 1 = 3,828.
Remarque: Voici un cas de test supplémentaire qui n'est pas aussi trivial que les deux exemples précédents. Il s'agit d'un rectangle formé de 6 coordonnées:
Ici, le chemin le plus long est: A -> E -> C -> O -> D -> B, qui est 8.7147
(max diagonales possibles parcourues et sans arêtes traversées)
la source
Réponses:
Pyth,
1051031009286 octetsEssayez-le ici!
la source
Mathematica, 139 octets
Cas de test
la source
Perl,
341322318 octetsLe code prend en charge jusqu'à 100 points. Puisqu'il produit toutes les permutations de points possibles, 100 points nécessiteraient au moins 3,7 × 10 134 yottaoctets de mémoire (12 points utiliseraient 1,8 Go).
Commenté:
TestCases:
$"
, et certains en lignela source