<!-- codex: 2026-11-13 4x4网格折纸探秘说明文档与数学题解，增加注意事项、快捷键与双模式指南 -->

# 4×4 正方形网格折纸厚度探秘 (Fold & Thickness Puzzle)

本项目是基于经典奥数折纸问题开发的现代交互式网页益智挑战，支持多端触控、3D立体视角、真实纸艺音效、防剧透自由盲盒探索与逐步教学演示。

---

## 一、题目背景与原题考证

> **【原题呈现】**（见原题插图 [e74280bc1323bf78c7447036ffdafa73.jpg](file:///E:/users/kpan/BaiduSyncdisk/program/aigc/fungame/math/fold/e74280bc1323bf78c7447036ffdafa73.jpg)）  
> 如图，4 × 4 的正方形纸片被虚线分成了 16 个一样大的小方格。现按照虚线折叠成一个平面图形（可以不折，也可以折叠多次，但每次必须按照虚线进行折叠），考虑折叠结果中每个小方格的层数，将最大层数记作该折叠结果的“厚度”。  
> 例如，图 2 中的“厚度”为 2；图 3 中的“厚度”为 4。显然，“厚度”最小为 1，最大为 16。  
> **那么所有折叠结果的不同“厚度”共有 _____ 种？**

---

## 二、严密数学证明

### 1. 结论
所有折叠结果的不同“厚度”共有 **9 种**，分别是：
$$\{1, 2, 3, 4, 6, 8, 9, 12, 16\}$$

### 2. 证明过程（两步因式分解定理）
1. **水平与垂直折叠沿网格完全解耦（笛卡尔积）**：
   - 题目严格限制“每次必须按照虚线进行折叠”。虚线全部是平行于坐标轴的整条网格直线。
   - 沿垂直虚线 $x=k$ 的折叠仅改变横向坐标与横向朝向，纵向坐标 $y$ 毫发无损；
   - 沿水平虚线 $y=m$ 的折叠仅改变纵向坐标，横向坐标 $x$ 毫发无损。
   - 两类变换在二维平面上**完全可对易**（Commutative），因此二维折叠中任何一个小方格位置的层数，严格等于**水平单向重叠层数 $T_x$** 与 **垂直单向重叠层数 $T_y$** 的乘积：
     $$\text{Thickness} = T_x \times T_y$$

2. **一维 4 连方纸条的可能厚度集合为 $\{1, 2, 3, 4\}$**：
   - 不折：厚度为 1；
   - 沿任一外侧网格线折叠：厚度为 2；
   - 连续沿同向折线折叠两次：厚度为 3（奇数层！）；
   - 彻底合拢为 1 格：厚度为 4。
   - 因此一维厚度集合为 $S_1 = \{1, 2, 3, 4\}$。

3. **二维厚度集合求值**：
   $$S_2 = \{T_x \cdot T_y \mid T_x, T_y \in \{1, 2, 3, 4\}\}$$
   - $1 \times \{1, 2, 3, 4\} = \{1, 2, 3, 4\}$
   - $2 \times \{1, 2, 3, 4\} = \{2, 4, 6, 8\}$
   - $3 \times \{1, 2, 3, 4\} = \{3, 6, 9, 12\}$
   - $4 \times \{1, 2, 3, 4\} = \{4, 8, 12, 16\}$
   - 取并集去重得到：
     $$\{1, 2, 3, 4, 6, 8, 9, 12, 16\}$$
     共恰好 **9** 种！

4. **为什么 5, 7, 10, 11, 13, 14, 15 绝对不可能？（反证法）**
   - 质数 5、7、11、13 无法分解为两个 $\le 4$ 的整数乘积；
   - 合数 10（$2\times 5$）、14（$2\times 7$）、15（$3\times 5$）均需要大于 4 的单向格子数，但在 4×4 纸片中单向最多仅有 4 格，因此拓扑上绝对不可达。

---

## 三、核心特性与双模式交互指南

### 1. 🔍 盲盒探索模式（默认开启 · 彻底防剧透）
- **隐藏总数与预设列表**：界面上隐去“共 9 种”与“X / 9”分子分母提示，只显示“已探索不同厚度：X 种”；
- **动态发现履带**：履带中只展示玩家自己亲手折叠发现的厚度徽章（初始仅有 1 层），后方跟随一个呼吸跳动的神秘卡槽 `[❓ 探索未知厚度...]`；
- **猜想空间**：充分保留玩家动手探索的思维乐趣，思考“到底能不能折出 5 层？奇数层可能吗？极限到底是多少层？”

### 2. 🎯 明牌全图鉴模式（揭晓答案 · 教学演示）
- 随时点击右上角胶囊切换为明牌模式；
- 明确展示 9 个专属卡槽（未解锁显示锁头 🔒）；
- 点击任意厚度徽章可启动**自动教学演示控制器**，观看最短折叠步骤的连续播放或单步拆解。

### 3. 🗑️ 一键清空收集功能
- 履带右上角提供 `🗑️ 清空收集` 按钮，配合质感模态确认弹窗，随时清空 LocalStorage 本地历史记录，重置为 1 层初始状态，方便重新体验或让好友挑战。

### 4. 🧊 3D 立体透视与 2D 热力图
- 支持一键切换 3D 透视视角，感受纸张物理堆叠厚度与空间倾斜阴影；2D 视角下呈现直观的层数热力图与倍数微标（如 `×4`）。

### 5. 🔍 方格堆叠透视抽屉
- 点击折叠后的任意方格，下方抽屉立即展开该格内部**所有纸层从底到顶的编号、正反面朝向与初始坐标**。

### 6. 🎨 四套精美纸艺皮肤
- **经典网格 📜**：还原试卷方格纸质感与数字标识；
- **和风彩纸 🌸**：柔和水粉粉樱与淡竹马卡龙色调；
- **极客蓝图 🌌**：深空暗色工程蓝图与全息荧光青线；
- **彩虹色谱 🌈**：16 方格独立光谱色，追踪轨迹最直观。

### 7. 🔊 Web Audio 纯算法拟真音效
- 纸张翻折刷刷声、指甲压痕清脆声、展开声、琶音成就钟鸣与通关华彩，**零外部网络音频依赖**。

---

## 四、核心注意事项 (Notes & Precautions)

1. **物理折叠约束法则**：纸张是一个连续整体，物理上不可能只折叠内部某一层而不剪开纸张。沿折痕翻折时，折线一侧的所有重叠纸层必须**整体翻折**至另一侧。
2. **公式排版规范**：页面所有公式采用 MathType 级语义 HTML 排版与专业数学衬线字体（Cambria Math / Latin Modern Math），**杜绝 raw LaTeX 语法遗留**，确保在完全无网络的离线环境下依然排版优美。
3. **坐标系与视口规范化**：每次折叠后，系统会自动对坐标进行最小包围盒平移重归一化，确保纸片居中且在手机、平板及 4K 屏幕上自适应居中。
4. **键盘快捷键**：
   - <kbd>Z</kbd>：撤销上一步折叠
   - <kbd>R</kbd>：重置抚平纸片
   - <kbd>H</kbd>：获取下一步探索提示

---

## 五、测试与工程验证

本项目配备了完整的自动化回归测试集：
- [tests/test_fold_game.py](file:///E:/users/kpan/BaiduSyncdisk\program\aigc\fungame\tests\test_fold_game.py) 包含 9 项专门单测（定理可达性、BFS求解器复现、非定理不可达性、双模式支持、清空收集逻辑、防 raw LaTeX 正则拦截）。
- 项目整体全量 **107 项 pytest 自动化测试 100% 绿灯全部通过**。
