Якщо ви ще не знаєте, кватерніон - це в основному 4-частинне число. Для цілей цього виклику він має реальний компонент і три уявні компоненти. Уявні компоненти представлені суфіксом 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
ключові слова та функції. Вхід буде єдиним рядком, а вихід буде списком, масивом, значеннями, розділеними пробілом тощо.
Оскільки це код-гольф , виграє найкоротший код у байтах.
Тести про тести
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
є частиною законних результатів для останніх двох прикладів?
eval
обмеження, яке слід приймати в рядку, інтерпретувати як код та / або вхід. Будь-які перетворення не враховуються під цим, оскільки ви не можете передати, наприклад, рядок "test"
до цілочисельної функції перетворення для отримання цілого числа, але test
буде інтерпретуватися як код у звичайній eval
функції. TLDR: eval: ні, введіть перетворення: так.
+
знаки у введенні? Як:+1k
?