Círculos e quadrados têm um ponto central único e definido. No entanto, a noção do centro de um triângulo tem sido discutida há muito tempo. Quatro centros diferentes eram conhecidos pelos gregos antigos:
- Incentivo : a interseção dos bissetores de ângulos do triângulo
- Centroid : A interseção das linhas de cada vértice do triângulo até o meio do seu lado oposto
- Circuncentro : A interseção dos bissetores perpendiculares dos lados
- Orthocentro : A interseção das altitudes do triângulo
Euler mais tarde provou que o centróide, o circuncentro e o ortocentro são colineares em qualquer triângulo. A linha em que esses três pontos estão em um triângulo é chamada de Linha de Euler . É definido para cada triângulo, exceto um triângulo equilátero, onde todos os pontos coincidem.
Seu desafio é criar o programa ou função mais curto que, quando recebidas duas entradas, gera um centro específico ou a linha Euler do triângulo. O primeiro especifica as coordenadas de cada vértice de um triângulo. O segundo é um número inteiro de 1 a 5, determinando o que produzir.
1 - Incenter
2 - Centroid
3 - Circumcenter
4 - Orthocenter
5 - Equation of Euler Line
(if the Euler Line is vertical, output the `x` value of the line
(e.g. output `5` if the equation of the line is `x = 5`))
Você pode supor que os vértices fornecidos nunca serão colineares e que sempre serão coordenadas inteiras (isso também exclui a possibilidade de ter um triângulo equilátero como entrada, conforme comentário de @ R.Kap ).
A matriz de entrada deve ser uma matriz aninhada válida no seu idioma e a entrada deve estar em qualquer formato razoável. Quaisquer valores flutuantes devem ser exibidos com pelo menos três casas decimais, mas não menos. Um ponto de saída deve ser uma matriz válida no seu idioma, correspondente ao formato de entrada.
Casos de teste:
Input: [(-2, 0), (1, 0), (0, 1)] 1
Output: (-0.089, 0.451)
Input: [(-2, 0), (1, 0), (0, 1)] 2
Output: (-0.333, 0.333)
Input: [(-2, 0), (1, 0), (0, 1)] 3
Output: (-0.5, -0.5)
Input: [(-2, 0), (1, 0), (0, 1)] 4
Output: (0, 2)
Input: [(-2, 0), (1, 0), (0, 1)] 5
Output: 5x + 2
Esclarecimento: A entrada pode ser de stdin, separada por espaço ou nova linha, ou como argumentos para uma função. A saída, no entanto, deve ser gravada em stdout.
y=f(x)
.
(if the triangle is equilateral, output the point at which the centers meet)
uma vez que é não possível criar um triângulo equilátero no plano de coordenadas utilizando apenas inteiro coordenadas.