一个arborally满意点集是2D点集,使得对于可在所述一组作为相对的角通过两个点来形成,该矩形包含或触摸至少一个其它点的任何轴对齐矩形。这是维基百科的等效定义:
如果具有以下属性,则可以说是满足点集要求的点:对于不都位于同一条水平线或垂直线上的任何一对点,都存在第三个点,该点位于前两个点所跨的矩形中(在边界内或边界上)。
下图说明了矩形的形成方式。不能任意满足此点集,因为此矩形还需要再包含至少一个点。
在ASCII技术中,此点集可以表示为:
......
....O.
......
.O....
......
稍作修改就可以使它满足:
......
....O.
......
.O..O.
......
在上方,您可以看到所有矩形(其中只有一个)至少包含三个点。
这是乔木满足的更复杂点集的另一个示例:
对于可以跨越两个点绘制的任何矩形,该矩形至少包含一个其他点。
挑战
给定的点的矩形网格(其余与代表O
)和空的空间(我所代表与.
),输出一个truthy值,如果它是arborally满足,或falsey值,如果它不是。这是代码高尔夫球。
附加规则:
- 您可以选择使用这些字符,
O
并.
与任何其他可打印的ASCII字符对互换。只需指定程序使用哪个字符映射即可。 - 网格将始终为矩形。尾随换行符是允许的。
更多例子
乔装满意:
.OOO.
OO...
.O.OO
.O..O
....O
..O..
OOOO.
...O.
.O.O.
...OO
O.O.
..O.
OOOO
.O.O
OO..
...
...
...
...
..O
...
O.....
O.O..O
.....O
OOO.OO
不满意:
..O..
O....
...O.
.O...
....O
..O..
O.OO.
...O.
.O.O.
...OO
O.....
..O...
.....O