Вызов:
Дана матрица NxN, где и одну из восьми различных «опций складывания», выведите двумерный массив / список с вычтенными значениями.
Восемь вариантов складывания: слева направо; справа налево; сверху донизу; снизу-вверх; к верхнее-левое-bottomright; topright к bottomleft; bottomleft к topright; bottomright к нижнему правому углу.
Пошаговые примеры:
Матрица ввода:
[[ 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, поскольку пустая матрица или матрица 1x1 не могут быть сложены.
- Вход матрицы всегда будет содержать неотрицательные числа в диапазоне (поэтому числа на выходе будут в диапазоне ).
- При (анти-) диагональном сгибе или нечетном вертикальном / горизонтальном сгибании средний «слой» останется неизменным.
- Ввод / вывод является гибким. Может быть 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]
, поэтому порядок не имеет значения. И извините, но вы должны вывести правильный сгиб на основе ввода, поэтому вывод всех восьми не разрешен.