Files

23 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第二轮规则数据
活跃玩法为 direction、block-alternation、walls、rhythm-door、hex-alternation,各8关。放弃的玩法和旧接口资料见archive/v1。
每包含mode/title/rule/levels;单关含id/mode/geometry/difficulty/title/caption/cells。方格和大格用x/y/w/h,异形shape为相对单位坐标;六边用q/r;clue是可选固定步号。
## 当前机制字段
- 格direction:`lr` 左右、`du` 上下、`ru` 上右、`dr` 右下、`dl` 下左、`lu` 左上。字符串按边字母排序。连接是双向,不能是端点。离开格后根据前后邻格相对于本格的方位判断。
- 格category:`circle` 是蓝,`triangle` 是橙。颜色全程保留,整块一步。连续节点必须异类。
- walls:`[[格id,格id],...]`。永久封闭的真实共边,无向,不占格。
- doors:`[{edge:[格id,格id],initialOpen:false}]`,最多一道。已落t格时,开状态为initialOpen与(t%2)的异或;起点计入t。穿门判断使用出发前t,落格后t+1。撤销重算,不维护会漂移的独立相位。
## 规则接口
`graph`给原始几何邻接;`constraints`展开可单独解除的新机制;`directionAt`返回当前进出边配对;`doorOpen`给指定路径长度时门位;`edgeBlocked`检查永久墙与当前门;`canAppend`检查操作合法性;`violations`检查数字与机制冲突;`solve`枚举完整合法路径;`hint`处理正确前缀与回退;`assertStructure`检查数据。
`solve({limit:2,omit:约束key})`用于逐项必要性证明。永久墙从求解邻接删去,切换门保留在潜在连通图中,仅移动时检查,避免把未来能打开的门当作永久墙误剪。预算耗尽抛错,不视为唯一。
墙与门必须位于真实共边,同一边不允许重复配置。六边融合分别解除颜色机制和每堵墙,均需至少两解。
各玩法使用自己的规则和界面副本,无跨玩法运行依赖、无原项目运行依赖。作者解与必要性反例只在设计资料和报告中,不在关卡或试玩包中。