Les cercles et les carrés ont un seul point central défini. Cependant, la notion de centre d'un triangle a longtemps été discutée. Quatre centres différents étaient connus des anciens Grecs:
- Incenter : l'intersection des bissectrices angulaires du triangle
- Centroïde : l'intersection des lignes de chaque sommet du triangle au milieu de son côté opposé
- Circumcenter : l'intersection des bissectrices perpendiculaires des côtés
- Orthocentre : l'intersection des altitudes du triangle
Plus tard, Euler a prouvé que le centroïde, le circumcenter et l'orthocentre sont colinéaires dans n'importe quel triangle. La ligne sur laquelle ces trois points se trouvent dans un triangle est appelée la ligne d'Euler . Il est défini pour chaque triangle sauf un triangle équilatéral, où tous les points coïncident.
Votre défi consiste à créer le programme ou la fonction la plus courte qui, lorsqu'elle reçoit deux entrées, génère un centre spécifique ou la ligne d'Euler du triangle. Le premier spécifie les coordonnées de chaque sommet d'un triangle. Le second est un entier de 1 à 5, déterminant ce qu'il faut sortir.
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`))
Vous pouvez supposer que les sommets donnés ne seront jamais colinéaires et qu'ils seront toujours des coordonnées entières (cela exclut également la possibilité d'avoir un triangle équilatéral en entrée, conformément au commentaire de @ R.Kap ).
Le tableau d'entrée doit être un tableau imbriqué valide dans votre langue et l'entrée doit être dans un format raisonnable. Toutes les valeurs flottantes doivent être affichées à au moins 3 décimales, mais pas moins. Un point en sortie doit être un tableau valide dans votre langue, correspondant au format d'entrée.
Cas de test:
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
Clarification: L'entrée peut provenir de stdin, être séparée par des espaces ou des nouvelles lignes, ou comme arguments d'une fonction. Cependant, la sortie doit être écrite sur stdout.
y=f(x)
.
(if the triangle is equilateral, output the point at which the centers meet)
car il n'est pas possible de créer un triangle équilatéral sur le plan de coordonnées en utilisant uniquement des coordonnées entières.