(受到https://codegolf.meta.stackexchange.com/a/17272/42963的随机启发)
给定一个矩形的数字矩阵(即0 - 9
),输出矩阵的“块”,就好像这些数字被连接在一起形成单个块(按数字升序排列)一样。这些部件保证只能正交连接-没有任何部件将对角连接。最多只能有10个片段(即,一个3
片段不会在同一矩阵中出现两次)。
例如,给定矩阵
0 1 1 1
0 0 1 2
3 3 2 2
以下是片段,以及示例输出:
0
0 0
1 1 1
1
2
2 2
3 3
间距对于保持部件的形状很重要,但是部件不一定需要内部间距。作品本身应以某种方式以一致的方式进行区分(例如,作品之间的换行符,确保每一个都是不同的字符,等等)。此外,不允许使用多余的空格(例如,尾随换行符或前导列)。例如,以下内容也将有效:
0
00
111
1
2
22
33
要么
#
##
###
#
#
##
##
但是以下内容不是(请注意0
s 后面的空格):
0
0 0
也不允许旋转或反射。例如,输出
1
111
对于上述矩阵也是无效的。
矩阵块可能有孔,也可能只有一个元素:
0 0 0 1
0 2 0 1
0 0 0 3
或者,该部分可能是整个矩阵:
0 0 0
0 0 0
这是一个更大,更复杂的测试用例:
1 1 1 1 1 2 2
3 4 4 4 2 2 2
5 5 4 4 2 0 0
5 6 6 6 6 7 7
5 6 8 8 6 6 7
9 6 6 6 7 7 7
和一个示例输出:
00
11111
22
222
2
3
444
44
55
5
5
6666
6 66
666
77
7
777
88
9
规则和I / O
0
用作填充值,是否可以接受?因此,将输出每个片段,并将矩阵中的其余值设置为0
-1
或其他值而不是没有空格/空白的输出矩阵都不是可以的。
' '
在这种情况下应该使用空格()吗?
-1
或表示空的空间,或者如果可能的话没有元素)来完成I / O ?