배경
쿼터니언 은 복소수를 확장하는 숫자 시스템입니다. 쿼터니언의 형식은 다음과 같습니다.
여기서 는 실수이고 는 3 개의 기본 쿼터니언 단위 입니다. 단위는 다음과 같은 속성을 갖습니다.
참고 사원 수의 곱셈은 교환 법칙이 성립하지 않습니다 .
직무
비 리얼 쿼터니언이 주어지면 제곱근 중 적어도 하나를 계산하십시오.
어떻게?
이 Math.SE answer 에 따르면 다음과 같은 형식으로 실제가 아닌 쿼터니언을 표현할 수 있습니다.
여기서 실수되고 형태 허수 단위 벡터이다 와 . 이러한 는 속성 을 가지므로 허수 단위로 볼 수 있습니다.
그런 다음 의 제곱은 다음과 같습니다.
반대로 쿼터니언 주어지면 다음 방정식을 풀어서 제곱근을 찾을 수 있습니다.
복소수의 제곱근을 찾는 과정과 동일합니다.
음의 실수는 쿼터니언 제곱근을 무한히 많이 갖지만, 리얼 수가 아닌 쿼터니언은 2 개의 제곱근을 갖습니다 .
입력과 출력
입력은 실제가 아닌 쿼터니언입니다. 선택한 순서와 구조에 따라 4 개의 실수 (부동 소수점) 숫자로 사용할 수 있습니다. 비 실제 란 중 하나 이상 이 0이 아님을 의미합니다.
출력은 제곱 할 때 입력과 같은 하나 또는 두 개의 쿼터니언입니다.
테스트 사례
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
이 Python 스크립트를 사용하여 생성되었습니다 . 각 테스트 사례에 대해 두 정답 중 하나만 지정됩니다. 다른 하나는 네 가지 값이 모두 무시됩니다.
득점 및 당첨 기준
표준 코드 골프 규칙이 적용됩니다. 각 언어에서 가장 짧은 프로그램이나 바이트 단위의 함수가 이깁니다.
a,[b,[c,[d]]]
당신이 어떻게 든 바이트를 절약 할 수 있다면 같은 것조차 괜찮습니다 :)
a, (b, c, d)
?