编写一个包含0“ s”和1“ s ”的多行字符串的程序或函数。字符串中不会再有其他字符,并且字符串始终将是矩形的(所有行将具有相同数量的字符),尺寸小至1×1,但否则可以任意排列0'和1'。
您可以假设该字符串具有可选的尾随换行符,并且如果需要,可以使用任意两个不同的可打印ASCII字符代替0和1。
打印或返回truthy值,如果所有的的路径连接的区域都0的和1的中的字符串是实心矩形,否则输出falsy值。
甲路径连接区域的0“是,从任何一个S是指0在该区域中,所有其它0的可以通过仅向上移动达到,下,左,右等0的(和不倾斜地移动,不移动到任何1和不会超出字符串范围)。同样的想法适用于1路径连接区域。
甲实心矩形的0的手段的矩形的整个区域被填充0的和没有1的。同样的想法适用于1实心矩形。
以字节为单位的最短代码获胜。抢七是较早的答案。
(请注意,字符串不会与环形边界条件一起环绕。)
例子
1)此输入字符串具有3个路径连接的区域(2个用于0,1个用于1)。但是,只有右下角的00区域是一个实心矩形,因此输出将是虚假的。
0011
0111
0100
2)该输入字符串具有4个路径连接的区域(2两者0和1)。它们都是实心矩形,因此输出将是真实的。
0011
0011
1100
3)此输入具有2条路径连接的区域,但其中只有一个是实心矩形,因此输出将是虚假的。
00000000
01111110
00000000
4)此输入只有1条路径连接的区域,并且是一个实心矩形,因此输出是真实的。
11111111
11111111
11111111
测试用例
T输入字符串下方的A 表示真实,F表示虚假。
0
T
1
T
00
T
01
T
10
T
11
T
0000000
T
1111111
T
011100100100101100110100100100101010100011100101
T
00
11
T
01
10
T
01
11
F
00
01
F
11
11
T
110
100
F
111
000
T
111
101
111
F
101
010
101
T
1101
0010
1101
0010
T
1101
0010
1111
0010
F
0011
0111
0100
F
0011
0011
1100
T
00000000
01111110
00000000
F
11111111
11111111
11111111
T
0000001111
0000001111
T
0000001111
0000011111
F
0000001111
1000001111
F
1000001111
1000001111
T
1110100110101010110100010111011101000101111
1010100100101010100100010101010101100101000
1110100110010010110101010111010101010101011
1010100100101010010101010110010101001101001
1010110110101010110111110101011101000101111
F