まだ知らない場合、クォータニオンは基本的に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
最後の2つの例のための法的出力の一部?
eval
文字列を取り、コードおよび/または入力として解釈されるように制限を定義しましょう。たとえば、"test"
整数を受け取るために文字列を整数変換関数に渡すことはできませんtest
が、通常のeval
関数ではコードとして解釈されるため、変換はすべてカウントされません。TLDR:評価:いいえ、型変換:はい。
+
入力に不要な兆候がありますか?のような:+1k
?