新闻中心

格子图案先缩后扩与先扩后缩为何效果不同:机制演算第26例

2026-11-11

地图清理中可以先去掉细小突出,再恢复较大的主体,也可以先填近邻空隙,再收回外层。两种操作顺序不同,得到的图案也可能不同。

用中心格和上下左右四邻格组成十字模板。膨胀把每个占用格及其四邻格都加入;腐蚀只保留十字模板全部落在占用集合中的中心格。开运算是先腐蚀再膨胀,闭运算是先膨胀再腐蚀。

本例的输入和输出

显示窗口六乘六,#表示占用,点表示空白。计算中保留窗口外的中间格子。

原图: ##..#. .#..## #...## .#..## .#..## ##.### 占用数量:20 开运算: ...... ...... ...... ...... ...... ...... 占用数量:0 闭运算: ##..#. .#.### #...## .#.### .##### ##.### 占用数量:24

表格中的编号只标识当前例子的元素,不应把对象身份、数组下标与计算数值混为一谈。阅读时先核对输入和边界,再沿记录检查每一步;空结果表示规则下没有可用项,并不是默认返回数值零。

复核与适用条件

本例把格子看成无限整数平面上的有限集合,中间结果允许临时越过显示边界,不能把它提前裁掉。开运算结果应包含于原集合,闭运算应包含原集合;重复同一种完整运算应保持结果。

十字模板和三乘三方形模板并不等价,斜角处理尤其不同。它们只是几何清理规则,不理解关卡用途;即使图案更平滑,也仍需检查道路连通和玩家可通行宽度。

练习时先独立复算一小段,再检查整体结果是否满足文中条件。遇到差异应保留中间记录并定位第一处不一致,而不是只调整最后答案。更换输入或操作规则后,需要重新计算,原记录只对这一例负责。