Isso é um pouco semelhante aos centros de um triângulo , mas com um ponto diferente. O ponto de Fermat é o ponto P no triângulo ABC, de modo que o valor de AP + BP + CP seja minimizado. Existem dois casos:
Se houver um ângulo maior que 120 graus, esse vértice é o ponto de fermat. Caso contrário, desenhe triângulos equilaterais em cada um dos lados do ABC. Conecte o vértice distante de cada triângulo equilátero ao vértice oposto do triângulo ABC. Fazer isso para cada um dos três triângulos equilaterais resulta em um único ponto comum de interseção para todas as três linhas, que é o ponto Fermat.
Ele deve ser executado dentro de 5 segundos em uma máquina razoável.
Entrada : um conjunto de 3 pontos, não necessariamente números inteiros. Isso pode ser tomado como uma matriz aninhada, sequência de caracteres, lista de tuplas etc. (o que for mais adequado ao seu idioma).
Saída : As coordenadas do ponto Fermat, novamente, no entanto, seu idioma lida melhor com os pontos. Imprecisões em pontos flutuantes não serão contadas contra você.
Casos de teste :
[[1, 1], [2, 2], [1, 2]] --> [1.2113248654051871, 1.788675134594813]
[[-1, -1], [-2, -1], [0, 0]] --> [-1, -1]
[[-1, -1], [1, -1], [0, 1]] --> [0, -0.42264973081037427]
[[0, 0], [0.5, 0.8660254037844386], [-5, 0]] --> [0, 0]
[[0, 0], [0, -5], [-0.8660254037844386, 0.5]] --> [0, 0]
Este é o código de golfe, então o código mais curto vence!
-0.0
é produzido no lugar de alguns 0.0
s?