Для этой задачи вы должны написать программу или функцию, которая выводит диагонали заданной квадратной матрицы. Однако если вы транспонируете строки и столбцы исходного кода вашего решения, вместо этого оно должно стать программой или функцией, которая возвращает антидиагонали матрицы. Читайте дальше для уточнения ...
правила
- Исходный код вашего решения рассматривается как двумерная сетка символов, разделенных стандартной новой строкой по вашему выбору (перевод строки, возврат каретки или их комбинация).
Никакая строка в вашем исходном коде не может быть длиннее предыдущей. Вот несколько примеров допустимых макетов:
### ### ###
######## ####### ### ### #
А вот пример неверного макета (третья строка длиннее второй):
###### #### ##### ###
Ваши два решения должны быть транспонируемыми друг для друга, то есть вы должны получать одно от другого, меняя строки и столбцы. Вот две допустимые пары:
abc def ghi
adg beh cfi
А также
print 10 (~^_^)~ foo bar !
p(fb! r~oa i^or n_ t^ ) 1~ 0
Обратите внимание, что пробелы обрабатываются как любые другие символы. В частности, конечные пробелы важны, так как они могут не быть конечными пробелами в транспонировании.
Каждое решение должно быть программой или функцией, которая принимает в качестве входных данных непустую квадратную матрицу из однозначных целых чисел. Одно решение должно выводить список всех диагоналей матрицы, а другое должно выводить список всех антидиагоналей. Вы можете использовать любые разумные, однозначные форматы ввода и вывода, но они должны быть идентичными в обоих решениях (это также означает, что они должны быть либо функциями, либо обеими программами).
- Каждая диагональ проходит сверху вниз слева направо, и они должны быть расположены сверху вниз.
- Каждая антидиагональ проходит снизу слева и сверху справа, и их следует упорядочивать сверху вниз.
счет
Чтобы поощрить решения, которые являются настолько «квадратными», насколько это возможно, основной показатель - это количество строк или количество столбцов вашего решения, в зависимости от того, что больше . Чем меньше тем лучше. Связи разбиваются по количеству символов в решении, не считая перевода строки. Опять же, чем меньше, тем лучше. Пример:
abcd
efg
h
Это и его транспонирование будут иметь начальный балл 4 (так как есть 4 столбца) и 8 баллов (так как есть 8 не-новых символов). Пожалуйста, укажите оба значения в заголовке вашего ответа.
Тестовые случаи
Реальная задача, выполняемая этими двумя решениями, не должна быть главной задачей здесь, но вот два примера, которые помогут вам протестировать ваши решения:
Input:
1 2 3
4 5 6
7 8 9
Diagonals:
3
2 6
1 5 9
4 8
7
Antidiagonals:
1
4 2
7 5 3
8 6
9
Input:
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Diagonals:
0
1 1
0 0 0
1 1 1 1
0 0 0
1 1
0
Antidiagonals:
1
0 0
1 1 1
0 0 0 0
1 1 1
0 0
1