该挑战的目的是确定是否可以平铺一维块的集合以形成有限的连续块。
阿片是零和一的一个非空的,有限序列的开始和结束与一个。一些可能的作品是1
,101
,1111
,1100101
。
平铺是指将小块排列成一个连续的块。一件中的一个可以占据零的位置,但另一件中的一个不能占据零的位置。
同样地,如果我们将一个视为“实心材料”,将零视为“孔”,则这些零件应适合于形成单一拉伸,而不会留下任何孔。
要形成平铺,只能沿着其一维空间移动碎片。(它们不能拆分或反映)。每件仅使用一次。
例子
三块101
,11
,101
可以平铺如示于下,其中每个片与所需的移位表示:
101
11
101
所以获得的拼贴是
111111
作为第二个示例,片段11011
和1001101
不能平铺。特别是转变
11011
1001101
无效,因为有两个会发生冲突;和
11011
1001101
无效,因为结果将包含零。
附加规则
该输入是一个或多个片段的集合。允许使用任何合理的格式;例如:
- 字符串列表,其中每个字符串可以包含两个不同的一致字符;
- 几个数组,其中每个数组包含一块的位置;
- 一列(奇数)整数,例如每个数字的二进制表示形式定义了一个片段。
的输出应该是一个truthy值,如果平铺是可能的,和一个falsy值否则。输出值不必保持一致;也就是说,对于不同的输入,它们可以不同。
以字节为单位的最短代码获胜。
测试用例
每个输入在不同的行上
特鲁西
1
111
1, 1
11, 111, 1111
101, 11, 1
101, 11, 101
10001, 11001, 10001
100001, 1001, 1011
10010001, 1001, 1001, 101
10110101, 11001, 100001, 1
110111, 100001, 11, 101
1001101, 110111, 1, 11, 1
虚假
101
101, 11
1, 1001
1011, 1011
11011, 1001101
1001, 11011, 1000001
1001, 11011, 1000001, 10101
101101
,即使没有有限的数量会导致连续的块,也将是真实的。