Aus http://en.wikipedia.org/wiki/Triangle :
Schreiben Sie ein Programm, das drei 2-D-Koordinatentupel (kartesisch) verwendet und klassifiziert, welche Form diese drei Punkte beschreiben.
In fast allen Fällen beschreiben diese Punkte ein Dreieck unterschiedlicher Art. In einigen entarteten Fällen beschreiben die Punkte entweder einen singulären Punkt oder eine gerade Linie. Das Programm bestimmt, welche der folgenden Tags für die beschriebene Form gelten:
- Punkt (3 Punkte sind Co-Incident)
- Linie (3 Punkte liegen auf einer geraden Linie - nicht mehr als 2 Punkte dürfen gleichzeitig auftreten)
- Gleichseitig (3 Seiten gleich, 3 Winkel gleich)
- Gleichschenklig (2 Seiten gleich, 2 Winkel gleich)
- Scalene (0 Seiten gleich, 0 Winkel gleich)
- Rechts (1 Winkel genau π / 2 (oder 90 °))
- Schräg (0 Winkel genau π / 2 (oder 90 °))
- Stumpf (1 Winkel> π / 2 (oder 90 °))
- Akut (3 Winkel <π / 2 (oder 90 °))
Beachten Sie, dass für einige beschriebene Formen mehr als eines der oben genannten Tags gilt. Beispielsweise ist jedes rechtwinklige Element entweder gleichschenklig oder schuppenförmig.
Eingang
- Das Programm kann die 3 Eingabekoordinaten von STDIN, der Befehlszeile, den Umgebungsvariablen oder einer für die Sprache Ihrer Wahl geeigneten Methode lesen.
- Die Eingabekoordinaten können formatiert werden, sind jedoch für die Sprache Ihrer Wahl geeignet. Es kann davon ausgegangen werden, dass alle Eingabenummern in Bezug auf die Datentypen, die Sie letztendlich verwenden, wohlgeformt sind.
- Über die Reihenfolge der Eingabekoordinaten kann nichts angenommen werden.
Ausgabe
- Das Programm gibt STDOUT, ein Dialogfeld oder eine andere für die Sprache Ihrer Wahl geeignete Anzeigemethode aus.
- In der Ausgabe werden alle Tags angezeigt, die für die durch die Eingabekoordinaten beschriebene Form gelten.
- Tags können in beliebiger Reihenfolge ausgegeben werden.
Andere Regeln
- Die trigonometrischen Bibliotheken / APIs Ihrer Sprache sind zulässig, aber alle APIs, die speziell Dreieckstypen berechnen, sind gesperrt.
- Wenn Sie die Gleichheit von Winkeln oder Längen von Seiten bestimmen, werden Sie wahrscheinlich Gleitkommawerte vergleichen. Zwei solche Werte sind als "gleich" zu betrachten, wenn einer innerhalb von 1% des anderen liegt.
- Standard "Schlupflöcher", die nicht mehr lustig sind
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Beispiele
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