一、先算边缘:最短的行和列最容易定锚
- 整行填满:5 格的行线索是 [5],全填;[4] 只有「空一格在左」或「空一格在右」两种位置。
- 单块贴边:线索 [1] 在 5 格行里,位置无法确定;但 [3] 在 5 格行里只有 3 种位置,先标出三种位置的公共格(正中间那格一定填)。
- 多块先算间隔:k 个块之间至少 k−1 个空格。把「块总长 + 间隔」与行长比较,差值就是可以自由挪动的余量。
顺序建议:先扫所有行和列里「块最长 / 块数最少」的那几条,它们给出的确定格最多,能带动其他行。
二、最小间隔法:什么时候整行唯一
把一行的块长相加,再加上块与块之间必需的 1 格间隔。如果 总和 = 行长,这一行只有一种排法,直接填满并标好间隔。
如果 总和 < 行长,差值就是「可以分配的余量」。余量分布在不同块上会产生不同排法,但某些格子在所有排法里都被覆盖——这就是重叠法要找的格。
例子:5 格行、线索 [2,1],总长 3 + 间隔 1 = 4,余量 1。枚举后会发现第 2 格在所有排法里都是填的。
三、重叠法:不用枚举也能找出必然格
对单个块:块长 L、所在行可用长度 N。若 2L > N,则中间 2L − N 格必填。比如 5 格行放一个 3 连,2×3−5=1,正中间那格必填。
对多个块:先把「最左排布」和「最右排布」各画一遍,两次都被填的格子必填;两次都为空的格子可以打叉。这个方法比逐个枚举快,也不容易漏。
四、打叉不是装饰:它决定后面能不能推
- 确定的空格立刻打 X,不要只在脑子里记——数织的推理链很长,记不住就会重复计算。
- 某个块在某个方向已经放满,它两侧的格子必然是空,直接打叉。
- 一行已经填够块数,剩下的格全打叉;这一条在残局里最省时间。
五、卡住了怎么办:按这个顺序回退
- 先检查有没有「已填够却还在填」或「该打叉没打」的低级错误——残局卡死八成是这个。
- 回到最近一个只靠单行就能确定的格,把它周围的行列重新用重叠法算一遍。
- 仍然推不动,说明这局需要假设。选候选最少的那一格假设,并记下假设点;一旦矛盾,回退到假设点换另一支,不要从半路重开。
数织的「唯一解」是题目保证的,不是你的推理保证。允许假设,但要把假设当成有记录的分支,而不是凭感觉乱点。
现在就去试
打开数织在线版(本站镜像,免下载、免注册、进度存在本机)。刚上手先看 玩法篇,想换规则看变体,全部攻略在 攻略索引。
本文为独立撰写的玩法攻略,不隶属于游戏原作者。游戏本体版权归原作者所有,按原许可证分发。