Lingkaran dan bujur sangkar memiliki satu titik pusat yang pasti. Namun, gagasan tentang pusat segitiga telah lama dibahas. Empat pusat yang berbeda diketahui oleh orang Yunani Kuno:
- Incenter : Persimpangan dari garis-bagi sudut segitiga
- Centroid : Perpotongan garis-garis dari setiap sudut segitiga ke tengah sisi yang berlawanan
- Circumcenter : Perpotongan garis-garis tegak lurus sisi
- Orthocenter : Persimpangan ketinggian segitiga
Euler kemudian membuktikan bahwa centroid, circumcenter dan orthocenter adalah collinear dalam segitiga apa pun. Garis di mana ketiga titik ini berada dalam segitiga disebut Garis Euler . Ini didefinisikan untuk setiap segitiga kecuali segitiga sama sisi, di mana semua titik bertepatan.
Tantangan Anda adalah membuat program atau fungsi terpendek yang, ketika diberi dua input, menghasilkan pusat tertentu atau Garis Euler pada segitiga. Yang pertama menentukan koordinat masing-masing simpul dari sebuah segitiga. Yang kedua adalah bilangan bulat dari 1 hingga 5, menentukan apa yang akan dihasilkan.
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`))
Anda dapat mengasumsikan bahwa simpul yang diberikan tidak akan pernah menjadi linear, dan bahwa mereka akan selalu menjadi koordinat bilangan bulat (ini juga mengecualikan kemungkinan memiliki segitiga sama sisi sebagai input, sesuai komentar @Kap ).
Array input harus berupa array bertingkat yang valid dalam bahasa Anda, dan input harus dalam format apa pun yang masuk akal. Nilai float apa pun harus ditampilkan ke setidaknya 3 tempat desimal, tetapi tidak kurang. Titik keluaran harus berupa array yang valid dalam bahasa Anda, cocok dengan format input.
Kasus uji:
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
Klarifikasi: Masukan dapat dari stdin, spasi atau baris baru dipisahkan, atau sebagai argumen untuk suatu fungsi. Outputnya, bagaimanapun, harus ditulis ke stdout.
y=f(x).
(if the triangle is equilateral, output the point at which the centers meet)karena tidak mungkin untuk membuat segitiga sama sisi pada bidang koordinat menggunakan hanya koordinat bilangan bulat.