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-4kist eine Quaternion mit 1der realen Komponente und mehr -2, 3und -4die 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, Ausgabe0für diese Begriffe) - Es kann hat Koeffizienten fehlen:
i+j-k(In diesem Fall ist dies gleichbedeutend mit1i+1j-1kanderen Worten, a.i,jOderkohne eine Zahl vor angenommen wird , eine haben ,1standardmäß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 evalSchlü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]
+.
-0ein Teil der rechtlichen Ergebnisse für die letzten beiden Beispiele?
evalEinschrä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 testin einer normalen evalFunktion als Code interpretiert würden . TLDR: eval: nein, Typkonvertierungen: ja.
+Zeichen in der Eingabe geben? Wie+1k:?