# 算法思考实验室：离线使用说明

双击本目录的 **index.html**，用 Edge、Chrome 等现代浏览器打开。无需安装 Node、Python 或其他依赖，也不需要启动服务器。页面、数学公式、字体和实验脚本均存放在本地，不依赖 CDN、在线账户或第三方接口。

## 怎样使用

1. 从学习地图进入当前课程，不以看完全部页面为目标。
2. “理解与推导”：先读核心公式的变量含义、适用条件与证明起点，再读完整讲义。后置提示和参考解默认折叠。
3. “动态实验”：选择输入，自己预测下一步。可前后单步、播放、暂停、改速度或拖动进度。到预测题会停下；可以作答，也可以主动展开解析。改变预设会从初始状态重新运行。
4. “练习与复测”：保留原始推导和卡点，再记录自己的题目、证据、自评分及是否独立作答。至少两道不同题、独立作答均≥8分且相隔48小时，才显示“已延迟复测·自评”。这是自评信息，不是系统确认你已掌握。
5. 搜索框检索全部讲义内容；原课件和原 Markdown 链接仍然有效。打印只打印当前阅读内容，未展开的答案不会自动打印。

15课都保留全文；15个实验各选该课的一个核心机制，合计32组预设。一个实验不等于覆盖整章所有算法。例如第13课实验聚焦树状数组，线段树完整内容在讲义中；第14课实验聚焦在线租买，近似与随机算法仍有完整推导与练习。

## 记录与备份

笔记、预测选择和验收记录保存到**当前浏览器、当前访问地址**的本机存储，不上传。浏览器对 file 地址的存储行为可能不同；网页会在保存失败时提示。切换浏览器、移动网页或清除浏览器数据前，请点击左侧“导出记录”，保存 JSON。

“导入记录”会保留已有验收记录并去除同时间、同题目的重复项；导入笔记追加到原笔记后。预测选择只说明当次点击，不作为独立掌握证据：时间轴允许提前查看后续状态。

## 文件与维护

- `index.html`：打开入口。
- `assets/content.js`：由22份原Markdown生成的完整内容和核心概念补充。
- `scripts/curriculum.mjs`：每课公式、符号、适用条件和概念检查题。
- `assets/labs-*.js`：各课真实算法轨迹与视图定义。
- `assets/app.js`、`assets/style.css`：阅读、播放、笔记及布局。
- `assets/vendor/`：本地公式渲染字体、生成器依赖和许可证。
- `tests/`：源文档哈希、有限算法对照检查和网页核验记录。

修改原Markdown后，在本目录运行：

```powershell
node scripts/build.mjs
```

这只在**维护内容**时需要Node。普通学习只需浏览器。生成器会保留全文、改写内部跳转、检查核心公式能否排版；它不会自动判断新增数学内容正确。

维护时可运行：

```powershell
node tests/test-foundations.cjs
node tests/test-graphs-dp.cjs
node tests/test-advanced.cjs
node tests/test-site.cjs
```

如需临时HTTP预览，可用 `node scripts/serve.cjs`，打开输出的本机地址，结束时按Ctrl+C。该方式与直接打开文件的学习记录通常不共享。

## 验证边界与来源

算法实验由输入计算轨迹，测试采用独立枚举、简单基准及逐帧不变量检查；有限测试不代替讲义中的一般证明。原课程文件未修改。课程大纲和样卷的历史年份、KMP数组约定等沿用“课件与考试映射”的解释。

本轮已在本机HTTP预览核对22个阅读页面、32个实验预设、桌面与窄屏布局及笔记导入导出。内置测试浏览器只允许HTTP/HTTPS，拒绝file协议，因此未在其中实测“直接双击HTML”；离线资源完整性已静态检查。具体范围见 `tests/site-checks.json` 和 `tests/browser-checks.json`。

公式使用固定版本 [KaTeX 0.19.0](https://katex.org/docs/browser)，Markdown生成使用 [Marked](https://marked.js.org/using_advanced) 17.0.5；许可证随本地文件保存。运行时没有远程脚本、字体、统计或账户请求。
