Вам предоставляется набор произвольных, уникальных, двумерных, целочисленных декартовых координат: например, [(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
(максимально возможные диагонали, пройденные без прохождения ребер)
источник
Ответы:
Pyth
1051031009286 байтПопробуй это здесь!
источник
Mathematica, 139 байтов
Прецедент
источник
Perl,
341322318 байтКод поддерживает до 100 баллов. Поскольку он производит все возможные точечные перестановки, для 100 точек потребуется как минимум 3,7 × 10 134 йоттабайт памяти (12 точек будут использовать 1,8 Гб).
комментарии:
TestCases:
$"
, а некоторые вставляяисточник