Você recebe um conjunto de coordenadas cartesianas arbitrárias, únicas, 2d, inteiras: por exemplo, [(0,0), (0,1), (1,0)]
Encontre o caminho mais longo possível desse conjunto de coordenadas, com a restrição de que uma coordenada possa ser "visitada" apenas uma vez. (E você não "volta" para a coordenada em que começou).
Importante:
Você não pode "passar" uma coordenada ou em torno dela. Por exemplo, no exemplo da última nota (Retângulo), você não pode passar de D para A sem visitar C (que pode ser uma nova visita, invalidando o comprimento encontrado). Isso foi apontado por @FryAmTheEggman.
Entrada de Função: Matriz de Coordenadas Cartesianas 2d
Saída de Função: Somente comprimento máximo
Vencedor: O código mais curto vence, não é impedido (Não é o mais eficiente em termos de espaço-tempo)
Exemplos
1 : Neste caso, mostrado acima, o caminho mais longo sem coordenada "visitada" duas vezes é A -> B -> O (ou OBA ou BAO), e o comprimento do caminho é sqrt (2) + 1 = 2.414
2 : neste caso mostrado acima, o caminho mais longo sem coordenadas "visitadas" duas vezes é ABOC (e obviamente COBA, OCAB etc.) e, para o quadrado da unidade mostrado, ele calcula para sqrt (2) + sqrt (2) + 1 = 3,828.
Nota: Aqui está um caso de teste adicional que não é tão trivial quanto os dois exemplos anteriores. Este é um retângulo formado por 6 coordenadas:
Aqui, o caminho mais longo é: A -> E -> C -> O -> D -> B, que é 8,7147
(máximas possíveis diagonais andadas e sem arestas atravessadas)
fonte
Respostas:
Pitão,
1051031009286 bytesExperimente aqui!
fonte
Mathematica, 139 bytes
Caso de teste
fonte
Perl,
341322318 bytesO código suporta até 100 pontos. Como produz todas as permutações de pontos possíveis, 100 pontos exigiriam pelo menos 3,7 × 10 134 yottabytes de memória (12 pontos usariam 1,8 Gb).
Comentado:
Casos de teste:
$"
e alguns inliningfonte