中文

经典智力题高频题库规格说明

本规格定义 iq 单页书的内容边界、交互方式和验收标准。页面面向零基础读者:每道题先把题面讲清楚,再从第一原则解释为什么这样想,最后用可操作的交互演示把关键状态跑一遍。

路由

  • 中文默认页:/books/iq/
  • 中文镜像页:/books/zh/iq/
  • 规格页:/books/iq/spec.html
  • 中文规格镜像:/books/zh/iq/spec.html

默认页和中文镜像内容一致,canonical 指向 /books/iq/,避免同一中文内容产生两个主地址。

字体与数学排版

本书继承 BOOK_STYLE.md 的全站书籍样式契约:正文、标题、导航、 控件、表格、图注和普通 UI 文本默认使用苹方字体栈;代码块、行内代码、 终端片段和代码编辑器默认使用 Cursor/LeetCode 代码字体栈 Monaco, "Cascadia Code", Consolas, "Courier New", ui-monospace, SFMono-Regular, Menlo, monospace。数学符号、状态数、复杂度、概率、约束范围、 公式和可量化指标能用 LaTeX/KaTeX 表达时必须优先使用 LaTeX。

内容范围

题库收录高频、可教学、适合面试或课堂讲解的经典智力题,覆盖以下类型:

  • 编码类:用状态数表示答案,例如毒酒老鼠、帽子奇偶。
  • 调度类:在约束下最小化总时间,例如过桥点灯、25 匹马。
  • 信号类:把不可直接观察的事件转成可计数信号,例如囚犯灯泡。
  • 公共知识类:沉默、等待、公开宣告都能传递信息,例如帽子题、蓝眼岛民。
  • 信息论类:每次测试尽量多分叉,例如 12 球三称、两鸡蛋高楼。
  • 概率类:条件概率、对称性和随机过程,例如蒙提霍尔、100 囚犯盒子。
  • 构造类:用有限操作造出目标状态,例如量水、水桶、香计时、过河。
  • 逆推类:从终局往前倒推,例如海盗分金、约瑟夫环。

题库不承诺包含互联网所有变体。它的目标是覆盖最常见的题型母题,让读者能迁移到同类变体。

单题结构

每道题必须包含:

  1. 清晰题面:说明对象、限制、目标、是否要求最坏情况。
  2. 一句话答案:先给结论,降低阅读负担。
  3. 第一原则解释:解释为什么不能靠直觉,应该看哪些不变量、状态数或递推关系。
  4. 分步解法:步骤必须能被初学者复述。
  5. 常见误区:指出最容易犯错的假设。
  6. 变体提示:说明同类题如何改参数或换约束。
  7. 交互演示:提供逐步播放、前进、后退、暂停,且每一帧对应解法中的一个关键状态。

页面交互

页面必须提供:

  • 顶部搜索框,支持按题名、分类、核心关键词过滤。
  • 分类按钮,便于只看编码、概率、构造等题型。
  • 题目卡片列表,显示编号、分类、难度、核心答案。
  • 每道题内嵌演示器,演示器必须能独立播放。
  • 演示器必须显示当前帧标题、解释、状态 token 和关键结论。
  • 移动端和桌面端都不能出现文字遮挡、横向溢出或按钮文字挤压。

数据模型

页面使用静态数据驱动。每道题至少包含:

  • id:稳定锚点。
  • number:展示编号。
  • title:中文题名。
  • category:题型分类。
  • difficulty:入门、常见、进阶或困难。
  • answer:短答案。
  • keywords:搜索关键词。
  • problem:题面段落数组。
  • principle:核心原理段落。
  • solution:分步解法数组。
  • pitfalls:常见误区数组。
  • variants:变体数组。
  • demo:交互演示数据,包含标题、说明和逐帧状态。

视觉风格

风格参考站内 LeetCode book 的题库工作台感,但阅读体验更接近长书:

  • 版面应密集、清晰、可扫描,不做营销式落地页。
  • 颜色使用站点现有 cream、charcoal、terracotta、border 等主题色。
  • 卡片圆角不超过 8px。
  • 按钮使用真实按钮元素,状态变化清晰。
  • 交互区以边框和背景区分,但不做卡片套卡片。

资料与归因

题库题面和解法使用通用经典表述,不复制第三方长文本。页面底部列出参考资料地图,用于说明题型选择和答案核对来源。

验收

实现完成后至少验证:

  • npm run check:content
  • npm run build
  • npm run check:dist
  • 本地打开 /books/iq/,检查搜索、分类、每道题演示器按钮和自动播放。

如修改 .go 文件才需要执行 gofmt;本书实现不涉及 Go 代码。