아직 모른다면 쿼터니언은 기본적으로 4 파트 숫자입니다. 이 도전의 목적을 위해, 그것은 실제 성분과 3 개의 가상 성분을 가지고 있습니다. 상상의 구성 요소는 접미사로 표현된다 i
, j
, k
. 예를 들어, 1-2i+3j-4k
함께 쿼터니언이다 1
실수 성분과 인 -2
, 3
및 -4
허수 성분 인.
이 도전에서는 쿼터니언 (예 :)의 문자열 형식 "1+2i-3j-4k"
을 계수 목록 (예 :)으로 구문 분석해야합니다 [1 2 -3 -4]
. 그러나 쿼터니언 문자열은 다양한 방식으로 형식화 될 수 있습니다.
- 정상일 수 있습니다.
1+2i-3j-4k
- 용어가 누락되었을 수 있습니다.
1-3k
,2i-4k
( 용어가 누락 된 경우0
해당 용어에 대한 출력 ) - 이 계수 누락 가질 수있다
i+j-k
(이 경우,이 동등1i+1j-1k
즉,.i
,j
또는k
앞의 번호가있는 것으로 가정하지 않고1
기본적으로 앞) - 올바른 순서가 아닐 수 있습니다.
2i-1+3k-4j
- 계수는 단순히 정수 또는 소수 일 수 있습니다.
7-2.4i+3.75j-4.0k
파싱하는 동안주의해야 할 사항이 있습니다.
- 항상
+
또는-
용어 사이에 있습니다 - 항상 최소 1 개의 용어를 사용하고 반복되는 문자 (
j-j
s) 없이 유효한 입력이 전달됩니다. - 모든 숫자는 유효하다고 가정 할 수 있습니다
- 당신은 당신이 원하는 경우 구문 분석 후 다른 형태로 번호를 변경할 수 있습니다 (예.
3.0 => 3
,0.4 => .4
,7 => 7.0
)
파싱 / 쿼터니언 내장 및 표준 허점은 허용되지 않습니다. 여기에는 eval
키워드와 기능 이 포함됩니다 . 입력은 단일 문자열이되고 출력은 목록, 배열, 공백으로 구분 된 값 등이됩니다.
이것이 code-golf 이므로 바이트 단위의 가장 짧은 코드가 이깁니다.
톤 테스트
1+2i+3j+4k => [1 2 3 4]
-1+3i-3j+7k => [-1 3 -3 7]
-1-4i-9j-2k => [-1 -4 -9 -2]
17-16i-15j-14k => [17 -16 -15 -14]
7+2i => [7 2 0 0]
2i-6k => [0 2 0 -6]
1-5j+2k => [1 0 -5 2]
3+4i-9k => [3 4 0 -9]
42i+j-k => [0 42 1 -1]
6-2i+j-3k => [6 -2 1 -3]
1+i+j+k => [1 1 1 1]
-1-i-j-k => [-1 -1 -1 -1]
16k-20j+2i-7 => [-7 2 -20 16]
i+4k-3j+2 => [2 1 -3 4]
5k-2i+9+3j => [9 -2 3 5]
5k-2j+3 => [3 0 -2 5]
1.75-1.75i-1.75j-1.75k => [1.75 -1.75 -1.75 -1.75]
2.0j-3k+0.47i-13 => [-13 0.47 2.0 -3] or [-13 .47 2 -3]
5.6-3i => [5.6 -3 0 0]
k-7.6i => [0 -7.6 0 1]
0 => [0 0 0 0]
0j+0k => [0 0 0 0]
-0j => [0 0 0 0] or [0 0 -0 0]
1-0k => [1 0 0 0] or [1 0 0 -0]
+
.
-0
마지막 두 예제에 대한 법적 출력의 일부?
eval
문자열에서 제한을 정의하고 코드 및 / 또는 입력으로 해석합니다. 예를 들어, "test"
정수를 받기 위해 정수 변환 함수로 문자열 을 전달할 수 없지만 test
일반 eval
함수 에서는 코드로 해석 되기 때문에 모든 변환은이 계산에 포함되지 않습니다 . TLDR : 평가 : 아니오, 유형 변환 : 예.
+
입력에 불필요한 표시가 있습니까? 처럼 :+1k
?