Якщо ви ще не знаєте, кватерніон - це в основному 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-js) - Усі числа можна вважати дійсними
- Ви можете змінити номери в іншу форму після розбору , якщо ви хочете (напр.
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?