23 lines
2.0 KiB
Markdown
23 lines
2.0 KiB
Markdown
# 第二轮规则数据
|
||
|
||
活跃玩法为 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})`用于逐项必要性证明。永久墙从求解邻接删去,切换门保留在潜在连通图中,仅移动时检查,避免把未来能打开的门当作永久墙误剪。预算耗尽抛错,不视为唯一。
|
||
|
||
墙与门必须位于真实共边,同一边不允许重复配置。六边融合分别解除颜色机制和每堵墙,均需至少两解。
|
||
|
||
各玩法使用自己的规则和界面副本,无跨玩法运行依赖、无原项目运行依赖。作者解与必要性反例只在设计资料和报告中,不在关卡或试玩包中。
|