Czas wykopać stare notatki z trygonometrii ze szkoły średniej! Wyzwanie polega na rozwiązaniu nieznanych boków i kątów różnych trójkątów. I jak to zwykle jest w golfie kodu, wygrywa najmniejszy działający kod.
To nie jest trywialny problem; moja referencyjna implementacja w Pythonie ma obecnie 838 837 znaków, ale jestem pewien, że będziesz w stanie grać w golfa o wiele mniejsze.
Dodatkowo, jeśli utkniesz, ta sekcja na Wikipedii powinna zacząć: Trójkąt: Obliczanie boków i kątów .
Wejście
Poniższy trójkąt pokazuje nazwy boków i kątów zastosowanych w tym wyzwaniu. Pamiętaj, że boki są małe, a kąty są wielkie.
Dane wejściowe są podawane jako sześć wartości oddzielonych spacjami, w stdin
argumentach wiersza polecenia lub jako argumenty (do wyboru). Sześć wartości odpowiada bokom a, b, c
i kątom A, B, C
. Nieznane strony podano jako znaki zapytania ( ?
). Kąty wejściowy i wyjściowy muszą być wyrażone w radianach. Możesz założyć, że wartości wejściowe są prawidłowe (nie musisz niczego sprawdzać). Możesz również założyć, że trójkąt wejściowy nie jest zdegenerowany, a wszystkie boki i kąty są niezerowe.
Poniższy przykładowy przykład mówi, że bok a
jest 8
, bok b
jest, 12
a kąt A
to 0.5
radiany:
8 12 ? 0.5 ? ?
Wynik
Dane wyjściowe są podawane w tym samym formacie co dane wejściowe - sześć liczb oddzielonych spacją stdout
. Jedynym wyjątkiem jest sytuacja, w której nie można rozwiązać trójkąta wejściowego - wówczas "No solution"
należy zapisać ciąg znaków stdout
. Jeśli możliwe są dwa rozwiązania, oba są generowane z nową linią między nimi.
Poniżej przedstawiono wynik dla powyższego wejścia:
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
Dane wyjściowe nie muszą mieć dużej precyzji, ale wymagane jest co najmniej kilka miejsc po przecinku.
Zasady
- Dane wejściowe są odczytywane z
stdin
argumentów wiersza polecenia - Dane wyjściowe są zapisywane do
stdout
- Jeśli dla danego wejścia możliwe są dwa rozwiązania, wypisz oba
- Jeśli jest zbyt mało informacji, aby uzyskać jedną lub dwie klarowne roztwory, uważają, że jest to
"No solution"
przypadek - Nie można użyć wbudowanego lub wcześniej istniejącego kodu (oczywiście można używać funkcji wyzwalacza, ale nie „
solveTriangle
” lub podobnych) - Najkrótszy kod wygrywa
Przypadki testowe
W 3 4 5 ? ? ?
Na zewnątrz 3.0 4.0 5.0 0.643501108793 0.927295218002 1.57079630572
W ? 4 ? 0.64 0.92 1.57
Na zewnątrz 3.00248479301 4.0 5.02764025486 0.64 0.92 1.57
W ? ? 5 ? 0.92 ?
Na zewnątrz No solution
W ? ? 5 ? 0.92 1.57
Na zewnątrz 3.03226857833 3.97800936148 5.0 0.65159265359 0.92 1.57
W 8 12 ? 0.5 ? ?
Out (dwa rozwiązania)
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
W 8 12 ? ? .5 ?
Na zewnątrz 8.0 12.0 18.3912222133 0.325325285223 0.5 2.31626736837