Gönderen http://en.wikipedia.org/wiki/Triangle :
Üç 2d koordinat tuple (Kartezyen) alan ve bu üç noktanın ne şekilde tanımlandığını sınıflandıran bir program yazın.
Neredeyse tüm durumlarda, bu noktalar farklı türlerden bir üçgen tanımlayacaktır. Bazı dejenere durumlarda, noktalar tekil bir noktayı veya düz bir çizgiyi tanımlayacaktır. Program, aşağıdaki etiketlerden hangisinin açıklanan şekle uygulanacağını belirleyecektir:
- Puan (3 puan ortak olay)
- Çizgi (3 puan düz bir çizgide uzanır - en fazla 2 puan eşzamanlı olabilir)
- Eşkenar (3 taraf eşit, 3 açı eşit)
- İkizkenar (2 taraf eşit, 2 açı eşit)
- Skalen (0 taraf eşit, 0 açı eşit)
- Sağ (1 açı tam olarak π / 2 (veya 90 °))
- Eğik (0 exactly tam olarak π / 2 (veya 90 °)
- Geniş (1 açı> π / 2 (veya 90 °))
- Akut (3 açı <π / 2 (veya 90 °))
Açıklanan bazı şekiller için, yukarıdaki etiketlerden birden fazlasının geçerli olacağını unutmayın. Örneğin, herhangi bir dik açılı da ikizkenar veya skalen olacaktır.
Giriş
- Program, 3 giriş koordinatını STDIN, komut satırı, ortam değişkenleri veya seçtiğiniz dil için uygun olan herhangi bir yöntemden okuyabilir.
- Bu giriş benim formatlanmamı sağlar ancak seçtiğiniz dil için uygundur. Tüm giriş numaralarının, kullandığınız veri türlerine göre iyi oluşturulduğu varsayılabilir.
- Giriş koordinatlarının sırası hakkında hiçbir şey kabul edilemez.
Çıktı
- Program, STDOUT'a, iletişim kutusuna veya seçtiğiniz dil için uygun olan görüntüleme yöntemine uygun olacaktır.
- Çıkış, giriş koordinatları tarafından açıklanan şekle uygulanabilir tüm etiketleri görüntüler.
- Etiketler herhangi bir sırayla çıkarılabilir.
Diğer kurallar
- Dilinizin trigonometrik kitaplıklarına / API'lerine izin verilir, ancak üçgen türlerini özel olarak hesaplayan herhangi bir API yasaktır.
- Açıların eşitliğini veya kenarların uzunluğunu belirlerken, büyük olasılıkla kayan nokta değerlerini karşılaştırmanız gerekir. Biri diğerinin% 1'inin içindeyse, bu iki değer "eşit" olarak kabul edilir.
- Artık komik olmayan standart “boşluklar”
- Bu kod golf , yani bayt cinsinden en kısa cevap kazanır.
Örnekler
Input Output
(1,2) (1,2) (1,2) Point
(1,2) (3,4) (5,6) Line
(0,0) (1,1) (2,0) Isosceles Right
(0,0) (2,1) (10,1) Scalene Oblique Obtuse