tło
Czwartorzęd jest systemem liczbowym, który rozszerza liczby zespolone. Czwartorzęd ma następującą postać
gdzie są liczbami rzeczywistymi, a są trzema podstawowymi jednostkami czwartorzędowymi . Jednostki mają następujące właściwości:
Zauważ, że mnożenie czwartorzędu nie jest przemienne .
Zadanie
Biorąc pod uwagę nierealny czwartorzęd, oblicz co najmniej jeden z pierwiastków kwadratowych.
W jaki sposób?
Zgodnie z odpowiedzią Math.SE możemy wyrazić dowolny nierealny czwartorzęd w następującej formie:
gdzie są liczbami rzeczywistymi, a jest urojonym wektorem jednostkowym w postaci z . Każdy taki ma właściwość , więc można go postrzegać jako jednostkę urojoną.
Następnie kwadrat wygląda następująco:
Odwrotnie, biorąc pod uwagę ćwiartkę , możemy znaleźć pierwiastek kwadratowy z rozwiązując następujące równania
który jest identyczny z procesem znajdowania pierwiastka kwadratowego liczby zespolonej.
Zauważ, że ujemna liczba rzeczywista ma nieskończenie wiele pierwiastków czwartorzędowych, ale nierealna czwórka ma tylko dwa pierwiastki kwadratowe .
Wejście i wyjście
Wejście jest nierealnym czwartorzędem. Można go traktować jako cztery liczby rzeczywiste (zmiennoprzecinkowe), w dowolnej kolejności i dowolnej strukturze. Nierealne oznacza, że co najmniej jedno z jest niezerowe.
Wyjście to jeden lub dwa ćwiartki, które w kwadracie są równe wejściowi.
Przypadki testowe
Input (a, b, c, d) => Output (a, b, c, d) rounded to 6 digits
0.0, 1.0, 0.0, 0.0 => 0.707107, 0.707107, 0.000000, 0.000000
1.0, 1.0, 0.0, 0.0 => 1.098684, 0.455090, 0.000000, 0.000000
1.0, -1.0, 1.0, 0.0 => 1.168771, -0.427800, 0.427800, 0.000000
2.0, 0.0, -2.0, -1.0 => 1.581139, 0.000000, -0.632456, -0.316228
1.0, 1.0, 1.0, 1.0 => 1.224745, 0.408248, 0.408248, 0.408248
0.1, 0.2, 0.3, 0.4 => 0.569088, 0.175720, 0.263580, 0.351439
99.0, 0.0, 0.0, 0.1 => 9.949876, 0.000000, 0.000000, 0.005025
Wygenerowano przy użyciu tego skryptu Python . Dla każdego przypadku testowego podana jest tylko jedna z dwóch poprawnych odpowiedzi; druga to wszystkie cztery wartości zanegowane.
Kryterium punktacji i wygranej
Obowiązują standardowe zasady gry w golfa . Najkrótszy program lub funkcja w bajtach w każdym języku wygrywa.
a,[b,[c,[d]]]
jest w porządku, jeśli można w ten sposób zaoszczędzić bajty :)
a, (b, c, d)
?