Wenn Sie es noch nicht wissen, ist eine Quaternion im Grunde eine 4-teilige Nummer. Für die Zwecke dieser Herausforderung besteht sie aus einer realen Komponente und drei imaginären Komponenten. Die imaginären Komponenten durch das Suffix dargestellt sind i
, j
, k
. Zum Beispiel 1-2i+3j-4k
ist eine Quaternion mit 1
der realen Komponente und mehr -2
, 3
und -4
die imaginären Komponenten zu sein.
In dieser Herausforderung müssen Sie die Zeichenfolgenform eines Quaternions (z. B. "1+2i-3j-4k"
) in eine Liste / ein Array von Koeffizienten (z. B. [1 2 -3 -4]
) zerlegen . Die Quaternion-Zeichenfolge kann jedoch auf viele verschiedene Arten formatiert werden ...
- Es kann normal sein:
1+2i-3j-4k
- Es können fehlende Begriffe:
1-3k
,2i-4k
(Wenn Sie fehlende Begriffe, Ausgabe0
für diese Begriffe) - Es kann hat Koeffizienten fehlen:
i+j-k
(In diesem Fall ist dies gleichbedeutend mit1i+1j-1k
anderen Worten, a.i
,j
Oderk
ohne eine Zahl vor angenommen wird , eine haben ,1
standardmäßig vor) - Möglicherweise ist die Reihenfolge nicht richtig:
2i-1+3k-4j
- Die Koeffizienten können einfache Ganzzahlen oder Dezimalzahlen sein:
7-2.4i+3.75j-4.0k
Beim Parsen sind einige Dinge zu beachten:
- Es wird immer ein
+
oder-
zwischen den Begriffen geben - Sie erhalten immer eine gültige Eingabe mit mindestens einem Begriff und ohne wiederholte Buchstaben (keine
j-j
). - Es kann davon ausgegangen werden, dass alle Zahlen gültig sind
- Sie können Zahlen in einer anderen Form ändern , nachdem das Parsen , wenn Sie wollen (ex.
3.0 => 3
,0.4 => .4
,7 => 7.0
)
Parsing / Quaternion-Builtins und Standard-Lücken sind nicht zulässig. Dies beinhaltet eval
Schlüsselwörter und Funktionen. Die Eingabe ist eine einzelne Zeichenfolge, und die Ausgabe ist eine Liste, ein Array, durch Leerzeichen getrennte Werte usw.
Da es sich um Code-Golf , kürzeste Code in Bytes gewinnt.
Tonnenweise Testfälle
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
ein Teil der rechtlichen Ergebnisse für die letzten beiden Beispiele?
eval
Einschränkung, die in einer Zeichenfolge verwendet werden soll, und interpretieren Sie diese als Code und / oder Eingabe. Alle Konvertierungen zählen nicht darunter, weil Sie beispielsweise die Zeichenfolge nicht "test"
an eine Ganzzahl-Konvertierungsfunktion übergeben können, um eine Ganzzahl zu erhalten, sondern test
in einer normalen eval
Funktion als Code interpretiert würden . TLDR: eval: nein, Typkonvertierungen: ja.
+
Zeichen in der Eingabe geben? Wie+1k
:?