如果您还不知道,则四元数基本上是4位数的数字。出于这一挑战的目的,它具有一个实部和三个虚部。虚数分量是由后缀表示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
解析时有一些注意事项:
- 条款之间总会有a
+
或-
- 您将始终获得有效的输入信息,该输入内容至少包含1个字词,并且没有重复的字母(no
j-j
s) - 所有数字都可以视为有效
- 你可以,如果你想解析后更改号码为另一种形式(例如,
3.0 => 3
,0.4 => .4
,7 => 7.0
)
不允许使用解析/四元数内置函数和标准漏洞。这包括eval
关键字和功能。输入将是单个字符串,输出将是列表,数组,由空格分隔的值等。
因为这是代码高尔夫,所以以字节为单位的最短代码获胜。
吨测试用例
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:eval:否,类型转换:是。
+
输入中是否会有不必要的信号?喜欢:+1k
?