Se non lo sai già, un quaternione è sostanzialmente un numero in 4 parti. Ai fini di questa sfida, ha una componente reale e tre componenti immaginarie . I componenti immaginarie sono rappresentati dal suffisso i
, j
, k
. Per esempio, 1-2i+3j-4k
è un quaternione con 1
essendo la componente reale e -2
, 3
ed -4
essendo le componenti immaginarie.
In questa sfida devi analizzare la forma di stringa di un quaternione (es. "1+2i-3j-4k"
) In un elenco / matrice di coefficienti (es. [1 2 -3 -4]
). Tuttavia, la stringa di quaternione può essere formattata in molti modi diversi ...
- Potrebbe essere normale:
1+2i-3j-4k
- Può avere termini mancanti:
1-3k
,2i-4k
(Se si dispone di termini mancanti, uscita0
per quei termini) - Potrebbe essere mancante coefficienti:
i+j-k
(In questo caso, questo equivale a1i+1j-1k
In altre parole, a.i
,j
Ok
senza un numero davanti si assume di avere un1
fronte di default) - Potrebbe non essere nel giusto ordine:
2i-1+3k-4j
- I coefficienti possono essere semplicemente numeri interi o decimali:
7-2.4i+3.75j-4.0k
Ci sono alcune cose da notare durante l'analisi:
- Ci saranno sempre termini tra
+
o-
- Ti verrà sempre inviato un input valido con almeno 1 termine e senza lettere ripetute (no
j-j
) - Tutti i numeri possono essere considerati validi
- È possibile modificare i numeri in un'altra forma dopo l'analisi, se si desidera (es.
3.0 => 3
,0.4 => .4
,7 => 7.0
)
Non sono consentite analisi incorporate / quaternioni e scappatoie standard. Questo include eval
parole chiave e funzioni. L'input sarà una singola stringa e l'output sarà un elenco, un array, valori separati da spazi bianchi, ecc.
Dato che si tratta di code-golf , vince il codice più corto in byte.
Tonnellate di casi di 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
parte dell'output legale degli ultimi due esempi?
eval
restrizione da assumere in una stringa, interpreta come codice e / o input. Le conversioni non contano ai sensi di questo perché non è possibile passare, ad esempio, la stringa "test"
a una funzione di conversione di numeri interi per ricevere un numero intero, ma test
sarebbe interpretata come codice in una eval
funzione normale . TLDR: eval: no, digitare conversioni: sì.
+
segni non necessari nell'input? Come+1k
:?