Si vous ne le savez pas déjà, un quaternion est essentiellement un numéro en 4 parties. Aux fins de ce défi, il a une composante réelle et trois composantes imaginaires . Les composantes imaginaires sont représentées par le suffixe i
, j
, k
. Par exemple, 1-2i+3j-4k
est un quaternion avec 1
être la composante réelle et -2
, 3
et -4
étant les composantes imaginaires.
Dans ce défi, vous devez analyser la forme de chaîne d'un quaternion (ex. "1+2i-3j-4k"
) Dans une liste / tableau de coefficients (ex. [1 2 -3 -4]
). Cependant, la chaîne quaternion peut être formatée de différentes manières ...
- Cela peut être normal:
1+2i-3j-4k
- Il peut avoir des termes manquants:
1-3k
,2i-4k
(Si vous avez des termes manquants, la sortie0
de ces termes) - Il peut avoir des coefficients manquant:
i+j-k
(Dans ce cas, cela équivaut à1i+1j-1k
Autrement dit, un.i
,j
Ouk
sans numéro devant est supposé avoir une1
face par défaut) - Ce n'est peut-être pas dans le bon ordre:
2i-1+3k-4j
- Les coefficients peuvent être simplement des entiers ou des décimales:
7-2.4i+3.75j-4.0k
Il y a certaines choses à noter lors de l'analyse:
- Il y aura toujours un
+
ou-
entre les termes - Vous recevrez toujours une entrée valide avec au moins 1 terme et sans lettres répétées (pas de
j-j
s) - Tous les nombres peuvent être considérés comme valides
- Vous pouvez modifier les numéros dans une autre forme après l' analyse syntaxique si vous voulez (ex.
3.0 => 3
,0.4 => .4
,7 => 7.0
)
Les analyses intégrées / quaternion et les failles standard sont interdites. Cela inclut les eval
mots clés et les fonctions. L'entrée sera une chaîne unique et la sortie sera une liste, un tableau, des valeurs séparées par des espaces, etc.
Comme il s'agit de code-golf , le code le plus court en octets l'emporte.
Des tonnes de cas de test
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
une partie de la production légale pour les deux derniers exemples?
eval
restriction à prendre dans une chaîne, interprète comme code et / ou entrée. Toutes les conversions ne comptent pas en dessous car vous ne pouvez pas passer, par exemple, la chaîne "test"
à une fonction de conversion d'entier pour recevoir un entier, mais test
serait interprété comme du code dans une eval
fonction normale . TLDR: eval: non, conversions de type: oui.
+
signes inutiles dans l'entrée? Comme+1k
:?