Я написав кілька викликів, пов’язаних з матрицями, і загальним для всіх є те, що я використовую такий формат, як наведений нижче, коли представляю матриці, як у прикладах, так і в тестових випадках:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Це, ймовірно, громіздкий формат на багатьох мовах.
Виклик:
Напишіть програму / функцію, яка може приймати матрицю у формі, заданій вгорі, як вхід (безпосередньо скопіювати / вставити з цієї публікації) та вивести ту саму матрицю на всі три інші звичайні формати, показані нижче .
Формат введення:
Числа, розділені різною кількістю пробілів, та нові рядки для відображення рядків (див. Тестові випадки).
- Кількість пробілів між номерами не гарантується послідовністю. Однак ви можете припустити, що остання цифра кожного стовпця вирівнюється (якщо це допомагає).
- Тут можуть бути як цілі числа, так і поплавці, і вони можуть бути додатними, від’ємними або нульовими. Матриця не буде містити цілих чисел і плаває одночасно.
- Ви можете припустити, що жодне число не перевищує 10 символів, включаючи мінус та десяткову точку для негативних поплавків.
- Ви можете припустити, що в кожній рядці та в кожному стовпчику однакова кількість записів.
- Не буде порожніх вхідних матриць, але можуть бути одиничні числа або матриці, що містять лише один рядок або стовпець.
- Ви можете в цих випадках вибирати між вихідними форматами, показаними в тестових випадках
Ваша програма / функція повинна обробляти дані, якщо вона безпосередньо скопійована з цього повідомлення та вставлена в інтерпретатор (STDIN або як аргумент функції або щось еквівалентне). Ви можете мати все, що вам подобається (дужки, лапки, дужки) перед та / або після матриці, але ви повинні вважати матрицю послідовністю символів, яку неможливо змінити (що включає нові рядки).
Для уточнення: Припустимо, ваша функція / програма викликається, f
а матриця:
1 -2
3 5
6 7
тоді ви можете надати матрицю як аргументи функції на зразок цього (і нескінченно багато інших варіантів):
f(1 -2
3 5
6 7)
f([1 -2
3 5
6 7])
f("""1 -2
3 5
6 7""")
Якщо ваша мова ні в якому разі не може взяти матрицю копіювання / вставлення як вхід, я боюся, що вам доведеться вибрати іншу мову.
Формат виводу:
Ви повинні вивести матрицю в наступних трьох форматах (порядок не має значення):
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
- Ви можете розділити три виходи, як тільки захочете (наприклад, новий рядок)
- Ви повинні виводити числа, використовуючи ту саму точність, що і вхід (наприклад, ви не повинні обрізати число десяткових знаків, а також не виводити цілі числа як плавці).
- Пробіли обов’язкові
- Ви повинні використовувати
-
для від'ємних чисел, не_
або подібних.
Тестові приклади:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
----
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
0.14778 0.27114 0.24415
0.45997 0.12287 0.67470
0.28945 0.37928 0.51887
----
[[0.14778, 0.27114, 0.24415], [0.45997, 0.12287, 0.6747], [0.28945, 0.37928, 0.51887]]
{{0.14778, 0.27114, 0.24415}, {0.45997, 0.12287, 0.6747}, {0.28945, 0.37928, 0.51887}}
[0.14778, 0.27114, 0.24415; 0.45997, 0.12287, 0.6747; 0.28945, 0.37928, 0.51887]
-0.0398301 0.2403455 -0.2253368 0.3565870 0.0605803 0.0830780
-0.3254422 -0.1185191 -0.2989537 0.1647319 0.3621135 0.2018815
-0.0022281 -0.3362287 -0.3568447 0.4419063 0.3801872 -0.2847033
---
[[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780], [-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815], [-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033],]
{{-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780}, {-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815}, {-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033},}
[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780; -0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815; -0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033]
0 4 1 0
0 0 -6 0
0 1 4 -3
2 0 0 8
0 0 0 0
----
[[0, 4, 1, 0], [0, 0, -6, 0], [0, 1, 4, -3], [2, 0, 0, 8], [0, 0, 0, 0]]
{{0, 4, 1, 0}, {0, 0, -6, 0}, {0, 1, 4, -3}, {2, 0, 0, 8}, {0, 0, 0, 0}}
[0, 4, 1, 0; 0, 0, -6, 0; 0, 1, 4, -3; 2, 0, 0, 8; 0, 0, 0, 0]
1
----
[1] (or [[1]])
{1} (or {{1}})
[1] (or 1)
1 2
----
[1, 2] (or [[1, 2]])
{1, 2} (or {{1, 2}})
[1, 2]
4
5
----
[[4], [5]]
{{4}, {5}}
[4; 5]
Я цілком усвідомлюю це , але в цьому виклику суттєвий суперечливий формат вводу / виводу. Завдання стосуватиметься форматування вихідних даних на деяких мовах, тоді як читання входів буде найважчою частиною в інших мовах.
Будь ласка, не варто відмовлятися, якщо читання вправ важке, вони можуть бути найцікавішими. Короткий не обов'язково такий же, як вражаючий. І як завжди, пояснення заохочуються!