Dostajesz zestaw arbitralnych, unikalnych, 2d, liczb całkowitych kartezjańskich współrzędnych: np. [(0,0), (0,1), (1,0)]
Znajdź najdłuższą możliwą ścieżkę z tego zestawu współrzędnych, z zastrzeżeniem, że współrzędną można „odwiedzić” tylko raz. (I nie „wracasz” do współrzędnej, od której zacząłeś).
Ważny:
Nie można „pominąć” współrzędnej ani jej obejść. Na przykład w przykładzie ostatniej nuty (Prostokąt) nie można przejść z D do A bez wizyty w C (co może być ponownym odwiedzeniem, unieważniając w ten sposób znalezioną długość). Wskazał na to @FryAmTheEggman.
Dane wejściowe funkcji: tablica 2d współrzędnych kartezjańskich Dane
wyjściowe funkcji: tylko maksymalna długość
Zwycięzca: Wygrywa najkrótszy kod, brak blokad (nie jest najbardziej efektywny w czasie)
Przykłady
1 : W tym przypadku pokazanym powyżej najdłuższa ścieżka bez współrzędnej „dwukrotnie odwiedzanej” to A -> B -> O (lub OBA lub BAO), a długość ścieżki to sqrt (2) + 1 = 2,414
2 : W tym przypadku pokazanym powyżej najdłuższa ścieżka bez współrzędnej „dwukrotnie odwiedzanej” to ABOC (i oczywiście COBA, OCAB itp.), A dla pokazanego kwadratu jednostkowego oblicza się na sqrt (2) + sqrt (2) + 1 = 3,828.
Uwaga: Oto dodatkowy przypadek testowy, który nie jest tak trywialny jak dwa poprzednie przykłady. To jest prostokąt utworzony z 6 współrzędnych:
Najdłuższa ścieżka to: A -> E -> C -> O -> D -> B, która wynosi 8,7147
(maks. Możliwe przekątne , po których chodzono i żadnych krawędzi nie przejechano)
źródło
Odpowiedzi:
Pyth,
1051031009286 bajtówWypróbuj tutaj!
źródło
Mathematica, 139 bajtów
Przypadek testowy
źródło
Perl,
341322318 bajtówKod obsługuje do 100 punktów. Ponieważ daje wszystkie możliwe permutacje punktowe, 100 punktów wymagałoby co najmniej 3,7 × 10 134 yottabajtów pamięci (12 punktów użyłoby 1,8 Gb).
Skomentowano:
Przypadki testowe:
$"
i trochę wstawianiaźródło