Вам предоставляется набор произвольных, уникальных, двумерных, целочисленных декартовых координат: например, [(0,0), (0,1), (1,0)]
Найдите максимально длинный путь из этого набора координат, с тем ограничением, что координату можно «посетить» только один раз. (И вы не «возвращаетесь» к той координате, с которой вы начали).
Важный:
Вы не можете «передать» координату или ее окрестности. Например, в последнем примере заметки (Rectangle) вы не можете перейти от D к A без посещения C (что может быть повторным посещением, сделав недействительной найденную длину). На это указал @FryAmTheEggman.
Вход функции: массив 2d декартовых координат
Выход функции: только максимальная длина
Победитель: выигрывает самый короткий код, без удержаний (не самый эффективный в пространстве и времени)
Примеры
1 : В этом случае, показанном выше, самый длинный путь без координаты, которую "посетили" дважды, - это A -> B -> O (или OBA, или BAO), а длина пути - sqrt (2) + 1 = 2,414.
2 : В этом случае, показанном выше, самый длинный путь без координаты, которую «посетили» дважды, - это ABOC (и, очевидно, COBA, OCAB и т. Д.), И для показанного единичного квадрата он рассчитывается как sqrt (2) + sqrt (2) + 1 = 3,828.
Примечание: вот дополнительный тестовый пример, который не так тривиален, как два предыдущих примера. Это прямоугольник, образованный из 6 координат:
Здесь самый длинный путь: A -> E -> C -> O -> D -> B, что составляет 8,7147
(максимально возможные диагонали, пройденные без прохождения ребер)