Виклик:
Дано матрицю NxN, де та один із восьми різних «варіантів складання», виведіть двовимірний масив / список із відніманими значеннями.
Вісім варіантів складання - це: зліва направо; справа наліво; зверху вниз; знизу вгору; верху донизу; зверху донизу; віднизу до верху; від низу до верху.
Покрокові приклади:
Матриця введення:
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
Складаючи варіант згори донизу, в результаті виводимо наступне:
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
Чому? Складаємо зверху вниз. Оскільки розміри матриці рівні, ми не маємо середнього шару для збереження таким, яким є. 'Ї рядок буде вирахувана з ( з - 1 ) -й рядком (були б ( - 2 ) -й рядком для непарних матриць розмірності); так стає . Потім ( a + 1 ) '-го рядка буде віднімано ( a - 2 ) '-й рядок (був би ( a - 3 ) '-й рядок для матриць непарних розмірів); так[1, 1, 1, 1]
[1-0, 1-8, 1-6, 1-4]
[1, -7, -5, -3]
[1, 25, 0, 75]
[1-1, 25-3, 0-5, 75-7]
стає [0, 22, -5, 68]
.
За допомогою опції складання замість неї (з тією ж матрицею введення вгорі) виводимо наступне як результат:
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
З наступними складними відніманнями:
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
Правила виклику:
- Для опцій складання можна використовувати будь-які вісім відмінних літер
[A-Za-z]
або виразні цифри в діапазоні . Числа або це, мабуть, найпоширеніші варіанти, але якщо ви хочете використовувати різні числа в межах діапазону для певних розумних обчислень, сміливо робіть це. Будь ласка, вкажіть, які варіанти складання використовували у своїй відповіді. - Матриця введення завжди буде квадратною матрицею NxN, тому вам не доведеться обробляти будь-які прямокутні матриці NxM. також завжди буде щонайменше 2, оскільки порожню або 1х1 матрицю неможливо скласти.
- Вхід матриці завжди буде містити негативні числа в діапазоні (отже, цифри на виході будуть знаходитися в діапазоні ).
- При (проти) діагональній складці або вертикальній / горизонтальній складності непарних розмірів, середній "шар" залишиться незмінним.
- Введення / виведення гнучко. Може представляти собою 2D масив / список цілих чисел; може бути повернуто або надруковано у вигляді рядка з обмеженим пробілом та новим рядком; ви можете змінити матрицю введення та замінити числа, які слід пропустити,
null
або число поза[-999, 999]
діапазону, щоб вказати, що вони пропали; тощо.
Загальні правила:
- Це код-гольф , тому найкоротша відповідь у байтах виграє.
Не дозволяйте мовам коду-гольфу відштовхувати вас від публікації відповідей з не кодовими гольф-мовами. Спробуйте придумати якомога коротшу відповідь на "будь-яку" мову програмування. - Для вашої відповіді застосовуються стандартні правила з правилами вводу / виводу за замовчуванням , тому вам дозволяється використовувати STDIN / STDOUT, функції / метод із відповідними параметрами та повним програмами типу повернення. Твій дзвінок.
- Лазівки за замовчуванням заборонені.
- Якщо можливо, додайте посилання з тестом для вашого коду (тобто TIO ).
- Також настійно рекомендується додавати пояснення до своєї відповіді.
Тестові приклади:
Матриця введення 1:
Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1],
[ 1,25, 0,75]]
Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]
Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]
Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]
Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]
Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]
Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]
Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]
Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]
Матриця введення 2:
Input-matrix (for the following eight test cases):
[[17, 4, 3],
[ 8, 1,11],
[11, 9, 7]]
Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]
Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]
Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]
Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]
Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]
Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]
Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]
Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]
A-Za-z
або будь-яке ціле число в діапазоні [-999,999]
, тому порядок не має значення. І вибачте, але ви повинні вивести правильну складку на основі введених даних, тому виведення всіх восьми заборонено.