让我们将标准砖石表示为[__]
(忽略顶部开放的事实)。当这些砖块堆叠在一起时,每隔一层就会偏移一半砖块,这在砖块构造中很常见:
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
因此,每个砖块最多具有六个邻居,并且不可能有两个砖块直接垂直排列。
关键是这些砖的布置不是用灰泥砌成的,而只是靠重力保持在一起。因此,重要的是结构中的每个砖块都必须稳定,否则整个结构都将不稳定。
单个积木可以通过三种方式稳定:
- 地面上的任何砖块(最低的砖块)都是稳定的。
任何在其正下方有两个砖块的砖块都是稳定的:
[__] <- this brick is stable [__][__] <- because these bricks hold it up
在同一侧上,下两面都具有砖块的任何砖块都是稳定的:
[__] [__] [__] [__] <- these middle bricks are stable [__] [__] because the upper and lower bricks clamp them in [__] [__] [__] [__] <- these middle bricks are NOT stable [__] [__]
从这些规则中,我们可以看到例如安排
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
之所以不稳定,是因为右上方的砖不稳定,这就是它所需要的。
仅当所有砖块均稳定时,砖结构才是稳定的。
挑战
您的任务是编写一个函数,该函数接受砖结构字符串,如果结构稳定,则返回真实值,如果不稳定,则返回假值。(真实/虚假定义)
输入的字符串可以任意大,但始终是矩形的字符网格,其中的空间填充了没有砖头的区域。字符网格的宽度可以被4整除,但是高度可以是奇数或偶数。
砖格始终在左下砖位置的上方和右侧延伸:
.
.
.
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK? . . .
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK?
根据结构,每个BRK?
代表砖([__]
)或空白(4个空格)。
注意,半砖型腔中填充有空格,以确保字符网格为矩形。
计分
以字节为单位的最短代码获胜。
笔记
- 如果需要,可以使用
.
空格代替空格。 - 空字符串被认为是稳定的。
- 如果您的语言没有函数,则可以使用命名的字符串变量作为输入,并将结果分配给另一个变量。
- 如果您的语言没有字符串,则可以执行适合输入的任何操作。
测试用例
用空行分隔的各种测试用例。为了清楚起见.
,使用空格代替空白。
稳定:
[__]
..[__]..
[__][__]
........[__]........
......[__][__]......
........[__]........
..[__][__]..
[__][__][__]
..[__][__]..
[__]....[__]
............[__]..
..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..
..[__]........[__]..
[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........
不稳定:
..[__]..
........
..[__]..
[__]....
..[__]..
....[__]
..[__][__]..
[__]....[__]
..[__][__]..
[__]....[__]
..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..
[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........
........[__]....
......[__][__]..
....[__][__]....
..[__][__]......
[__][__]........
..[__]..........
(您必须在头脑上将这些线叠放在一起。要注意的是,您的规则允许重心偏离与地面的接触点的结构。应有可能将其拧紧以避免这种情况,而不需要物理引擎,如果您愿意的话。)