对于这个挑战,您应该编写一个程序或函数来输出给定方阵的对角线。但是,如果对解决方案源代码的行和列进行转置,则它应该成为返回矩阵的对角线的程序或函数。继续阅读以了解详细信息...
规则
- 解决方案的源代码被视为2D字符网格,由您选择的标准换行符分隔(换行,回车或两者结合)。
源代码中的任何一行都不能长于上一行。以下是有效布局的一些示例:
### ### ###
######## ####### ### ### #
这是一个无效布局的示例(因为第三行比第二行长):
###### #### ##### ###
您的两个解决方案应该是彼此的换位,也就是说,您应该通过交换行和列来获得彼此的解决方案。这是两个有效对:
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