挑战:
给定一个NxN矩阵,其中和八个不同的“折叠选项”之一,输出带有减去值的2D数组/列表。
八个折叠选项是:从左到右;从左到右。右到左; 从上到下; 从下到上 从左上到右下; 从右上到左下; 从左下到右上;从右下到左上。
分步示例:
输入矩阵:
[[ 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]]
为什么?我们从上到下折叠。由于矩阵尺寸是均匀的,因此我们没有中间层可以保持原样。的 “第i行将由被减去第i行”(本来 “第i行用于奇数维矩阵); 因此成为。然后,将第行减去第行(对于奇数维矩阵,将是第行);因此成为。[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]
使用折叠选项bottomright-to-topleft(上面具有相同的输入矩阵),我们将输出以下结果:
[[-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矩阵。
- 矩阵的输入将始终包含范围内的非负数(因此,输出中的数字将在范围内)。
- 通过(反)对角折叠或奇数维垂直/水平折叠,中间的“层”将保持不变。
- I / O是灵活的。可以是2D数组/整数列表;可以以空格和换行符分隔的字符串返回或打印;您可以修改输入矩阵并替换应该使用的数字
null
或超出[-999, 999]
范围的数字以表示它们已消失;等等等
一般规则:
- 这是代码高尔夫球,因此最短答案以字节为单位。
不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 - 标准规则适用于具有默认I / O规则的答案,因此允许您使用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
range中的任何字母或任何整数[-999,999]
,因此顺序无关紧要。抱歉,但是您必须根据输入输出正确的折页,因此不允许输出全部八折。