17 道原创 9 路局部题,每题 3 或 5 手,合计 22 条收录分支。稳定 ID 为 original-l3-01 至 original-l3-17,均为 skill=capture、difficulty=3、sequence=true。前 12 个 ID 保持稳定。
这些练习训练逐手紧气、双打吃、倒扑、接不归和短征吃。难度 3 是本应用的教学分级,并非正式棋力评级。双打吃 2 道、倒扑 3 道、接不归 3 道、边线追吃 5 道、整块打吃 1 道、短征吃 3 道。
由本项目原创构造,未复制书籍、收费题库或第三方棋谱。每题 source.kind=original。只验证题目收录变化合法并实际完成提子目标;没有穷尽白棋所有应手,也没有证明第一手唯一或全局最佳。棋形变化改变棋块结构或子数,并非只把已有棋形旋转、镜像或平移。
在项目根执行 python3 data/original-extra/build.py,输出 lessons.json 与 validation.json。生成器复用本项目 tactics.validate_lesson 和 go_rules.play,检查初始棋块有气、逐手落子合法、自杀禁着、全局同形禁着、所有叶节点实际提掉指定目标。额外断言打吃后的目标气数,倒扑牺牲子和白棋提子后的气数,短征吃伸展后的气数,并记录每手提子数和落子棋块气数。
去重指纹遍历 8 种旋转/镜像并消除平移,检查新增题彼此不同且与 tactics.catalog() 原有题不同。验证记录逐分支保存,不把样例重放当作最优性证明。
| ID 后缀 | 题目 | concept | 手数 | 分支 |
|---|---|---|---|---|
| 01 | 双打吃:三子弯块与两子竖块 | double_atari |
3 | 2 |
| 02 | 双打吃:横块与向下四子弯块 | double_atari |
3 | 2 |
| 03 | 倒扑:送一子,回提弯曲四子 | snapback |
3 | 1 |
| 04 | 接不归:连上另一块也逃不掉 | connection_trap |
3 | 2 |
| 05 | 一线追吃:三颗横排白棋 | edge_chase |
3 | 1 |
| 06 | 边线追吃:向内拐出的三子 | edge_chase |
3 | 1 |
| 07 | 转角紧气:角上六子寻找出口 | edge_chase |
3 | 1 |
| 08 | 寻找出口:钩形棋块向右长 | edge_chase |
3 | 1 |
| 09 | 共享气:边上的T形棋块 | edge_chase |
3 | 1 |
| 10 | 整块追吃:方形白棋向右长 | atari |
3 | 1 |
| 11 | 短征吃:转一次弯就能提 | ladder |
5 | 1 |
| 12 | 短征吃:两子一起被追赶 | ladder |
5 | 1 |
| 13 | 倒扑:回提沿边伸长的五子 | snapback |
3 | 1 |
| 14 | 倒扑:回提两列相连的六子 | snapback |
3 | 1 |
| 15 | 接不归:两子竖块接上也无路 | connection_trap |
3 | 2 |
| 16 | 接不归:三子弯块越接越重 | connection_trap |
3 | 2 |
| 17 | 短征吃:三子弯块连续转向 | ladder |
5 | 1 |