Arka fon
Kuaterniyon karmaşık sayıları genişleten bir sayı sistemidir. Bir kuaterniyon aşağıdaki forma sahiptir
burada gerçek sayılar ve üç temel kuaterniyon birimidir . Birimler aşağıdaki özelliklere sahiptir:
Kuaterniyon çarpımının değişmeli olmadığını unutmayın .
Görev
Gerçek olmayan bir kuaterniyon verildiğinde , kareköklerinden en az birini hesaplayın.
Nasıl?
Göre bu Math.SE cevap , aşağıdaki formda olmayan gerçek quaternion ifade edebilir:
burada reel sayılardır ve olduğu şeklinde hayali birim vektör ile . Bu tür özelliğine sahiptir hayali birim olarak görülebilir, böylece.
Sonra karesi şöyle görünür:
Tersine, bir kuaterniyon verildiğinde , aşağıdaki denklemleri çözerek un kare kökünü bulabiliriz
bu karmaşık bir sayının kare kökünü bulma işlemiyle aynıdır.
Negatif bir gerçek sayının sonsuz sayıda kuaterniyon karekökü olduğunu, ancak gerçek olmayan bir kuaterniyonun sadece iki kare kökü olduğunu unutmayın .
Giriş ve çıkış
Girdi gerçek olmayan bir kuaterniyondur. Seçtiğiniz herhangi bir sırada ve yapıda dört gerçek (kayan nokta) sayı olarak alabilirsiniz. Gerçek olmayan , en az birinin sıfır olmadığı anlamına gelir .
Çıktı, kare olduğunda girdiye eşit olan bir veya iki kuaterniyondur.
Test senaryoları
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
Bu Python betiği kullanılarak oluşturulur . Her test durumu için iki doğru cevaptan sadece biri belirtilmiştir; diğeri ise dört değerin de olumsuzlanmasıdır.
Puanlama ve kazanma kriteri
Standart kod golf kuralları geçerlidir. Her dilde bayt cinsinden en kısa program veya işlev kazanır.
a,[b,[c,[d]]]
onunla bayt kaydedebilirsiniz eğer, gayet iyi, :)
a, (b, c, d)
?