什么是 Griductive 以及谜题是如何制作的

发布: (2026年3月23日 GMT+8 13:31)
12 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的完整文本内容,我将按照要求保留源链接、原始格式和代码块,仅翻译正文部分为简体中文。

保证

每个 Griductive 谜题承诺 永不 需要猜测。

  • 每个格子都可以仅凭逻辑推断得出。
  • 正确解恰好 唯一

这不是设计目标——而是由用于运筹学和芯片验证的同类求解器所强制的 数学保证。如果一个谜题有两个有效解,则必定至少有一个格子,使得 Suspect(嫌疑)和 Innocent(无辜)两者都满足所有线索。在该格子上,无论如何推理都无法决定哪一个是正确的,这将迫使猜测——这会违背推理谜题的核心约定。因此,生成器 谜题发布之前 证明 不会存在第二个解。

谜题生成流水线(五个阶段)

阶段发生的事情
1 – Solution Generation创建一个随机的 solution grid —— 对每个格子进行 Suspect / Innocent 的完整分配。这是玩家最终要推断的真实答案。
2 – Clue Enumeration对在解答板上为真的 every possible clue 进行穷尽枚举。Griductive 拥有 26+ distinct clue types(计数、比较、空间、存在性、唯一性、连通性,……)。对每种类型,生成器会测试所有有效的参数化。一个 4×4 的网格可以产生 thousands 条候选线索;仅保留在解答上为真的那些。
3 – Minimal‑Clue Selection从庞大的真实语句池中,挑选一个 small subset,满足两个条件:1️⃣ Sufficient —— 这些线索共同将解空间限制为唯一的一个棋盘。2️⃣ Non‑redundant —— 移除任意单条线索后会出现多个解。Greedy constraint‑satisfaction algorithm:
1. 从未选择任何线索开始(解空间极大)。
2. 为每个候选线索打分,依据其削减剩余可能性的程度(例如,消除 80 % → 高分)。
3. 添加得分最高的线索。
4. 使用更新后的线索集合重新求解约束模型。
5. 重复上述步骤,直至求解器确认唯一解。
6. Prune 最终集合中任何不必要的线索。
4 – Difficulty Scoring使用四个加权因素在 0–100 评分尺度上计算难度评分:
Simple‑clue ratio (35 %): 直接计数/身份线索的比例。简单线索越多 → 谜题越容易。
Complex‑clue ratio (30 %): 需要多步或空间推理的线索比例。
Information scarcity (20 %): 相对于网格大小的线索数量越少 → 越难。
Grid scale (15 %): 更大的网格本身更具挑战性(例如,5×5 ≈ 3× 3×3 的格子数)。
每种线索类型还拥有固有的复杂度评级(例如,“Julia is a suspect” = 非常简单;“Julia is the only person in row 3 with exactly 1 suspect neighbour” = 高复杂度)。
5 – Hint Sequence & Packaging构建一个 hint sequence —— 推荐的解题顺序,逐步帮助卡住的玩家。提示按 dependency depth 排序:可立即推断的格子排在前面;需要长推理链的格子排在后面。
将最终谜题打包为:
• 元数据(网格大小、标题等)
• 最小线索集
• hint sequence
• 难度评分

幕后求解器

在流水线的核心是 Google OR‑Tools CP‑SAT,一种将约束传播、整数规划和 SAT 求解相结合的约束编程求解器。

  • 变量 – 每个格子都是一个布尔变量:Suspect = 1(嫌疑人),Innocent = 0(无辜)。
  • 约束 – 每条线索都被转化为一个或多个关于这些变量的数学约束。

示例翻译

"There are exactly 2 suspects in row 3"
→  cell[3,0] + cell[3,1] + cell[3,2] + cell[3,3] = 2

"All suspects in column A are connected"
→  a connectivity constraint ensuring that suspect cells in column A form a contiguous chain with no gaps.

"Row 1 has more suspects than column B"
→  sum(row_1) > sum(col_B)

如何验证唯一性

在组装完线索集合后,生成器会询问 CP‑SAT:

“在这些约束下,是否存在多个有效的分配?”

CP‑SAT 可以 枚举所有解

  • 恰好一个解 → 谜题有效。
  • 两个或更多解 → 生成器返回 第 3 阶段 并添加另一条线索。

这是一种 形式化证明,而非启发式方法。CP‑SAT 会穷尽搜索解空间;如果它报告只有一个解,则唯一——仅此而已。

可扩展性考虑

一个 5×5 的网格有 25 格,每格有 2 种可能的取值 → (2^{25} = 33{,}554{,}432) 种可能的棋盘。对所有棋盘进行暴力搜索是不可行的。

CP‑SAT 之所以快得多,是因为 约束传播:当一条线索说明 “第 3 行恰好有 2 名嫌疑人” 时,求解器会立即缩小搜索空间,在考虑之前就剪枝掉不可能的分配。

TL;DR

  • Griductive 保证唯一且可逻辑推导的解。
  • 一个五阶段流水线(solution → clue enumeration → minimal‑clue selection → difficulty scoring → hint sequencing)构建每个谜题。
  • Google OR‑Tools CP‑SAT 提供严格、可证明的唯一性检查,并驱动整个生成过程。

享受纯粹的推理!

Griductive 如何保证唯一性

  • 验证速度 – CP‑SAT 能在毫秒级内证明 5 × 5 谜题的唯一性,即使“neighbors”(邻居)、“connected”(连通)和“between”(介于)线索以复杂方式相互作用。

  • 正式定义 – 每种线索类型都有精确的数学定义:

    • Neighbors(邻居) – 包括对角线在内的最多 8 个相邻格子。
    • Connected(连通) – 相邻格子组成的连续链。
    • Between(介于) – 同一行或同一列中的格子,排除端点。

    这些定义直接写入约束模型中,避免了自然语言解释环节可能产生的歧义。游戏内的 Clarifying Details(澄清细节)参考会向玩家明确每个空间关键字的含义。

  • 稳健求解器 – CP‑SAT 求解器是由 Google 优化团队维护的、经过广泛使用和充分测试的工具。我们不仅仅依赖信任;每个生成的谜题都会被独立验证。

验证过程

  1. 自动求解 – 自动求解器尝试逐步求解每个谜题,模拟人类玩家。如果仅凭逻辑推理无法得到完整解答,则该谜题被拒绝。
  2. 提示合理性检查 – 验证序列中的每个提示在逻辑上有效:提示的格子必须真正可以从线索和之前已揭示的格子中推导出来,而不是依赖隐藏信息。
  3. 线索评估 – 每种线索都有一个正式的评估函数,并在已知的谜题配置上进行测试。在生成线索池时,仅保留在实际解答上评估为 true 的线索;在解答上为 false 的线索永远不会出现在谜题中。

谜题生成流水线(回顾)

当你打开一个 Griductive 谜题时,以下工作已经完成:

  1. 已生成一个随机解。
  2. 已对数千条候选线索进行评估。
  3. 选取了一个最小且非冗余的子集。
  4. 正式求解器证明 恰好只有一个 解满足这些线索。
  5. 自动求解器独立验证该谜题可通过纯推理求解。
  6. 计算了难度分数并生成了提示序列。

此过程每天运行,适用于所有四种网格尺寸,毫无例外。

承诺

如果你卡住了,说明还有一个线索你尚未充分利用。
如果你认为有两个答案可能,请重新阅读线索——逻辑会给出答案。

如果你想要证据,Logic Graph 会展示从线索到解答的完整推理链。

Source:

未来方向:添加风味

现在,Griductive 的线索读起来像精确的逻辑陈述——清晰且毫不含糊,但不可否认有点过于临床。

“第 3 行恰好有 2 名嫌疑人。”

我们正在积极改进这一点。目标是让线索的表达方式更加多样化,在保持相同底层逻辑精确度的同时,加入主题风味。想象一下,将线索与节日活动关联,或以特定犯罪现场的目击者证词形式呈现。与其使用死板的公式,你会读到更像是调查中真实证据的文字。

关键约束未变: 每条线索仍必须 一致、明确且形式上可验证。求解者不在乎线索听起来像数学教材还是黑色侦探小说——他们只关心逻辑内容。这种分离使得在不牺牲正确性的前提下,实现更丰富的表达成为可能。

相同的保证。相同的严谨。但谜题不再像方程式,而更像值得破解的案件。

无需猜测。无需运气。数学上有保证。

Play today’s puzzle →

0 浏览
Back to Blog

相关文章

阅读更多 »

不,Windows Start 并未使用 React

2026年3月23日 — Pat Hartl Windows 再次成为新闻焦点。这一次,Microsoft 发布了一份标准的企业《Our commitment to Windows quality》https://blogs.windo...