🖐️ 金手机芯 —— garden_fifty.py
第 50 轮 = 金婚:墙随者第一次伸出左手。迷宫生成与第 29 轮 mazelang 同构(同一份递归回溯代码,种子 29,13×13),左右手各走一遍,看两只手合起来能不能摸遍整座花园。纯标准库,零依赖。
机芯
- 迷宫:种子 29 递归回溯完美迷宫,337 格 = 169 房间 + 168 走廊 = 336 条走廊;S 在 (1,1),E 在最深处 (21,19)(bfs_deepest,老规矩)。
- 右手法则(第 29 轮的旧账):每步先试右转/直走/左转/掉头,初始朝东——346 步,踩过 345 块地板(含重复),独踩 285 格,漏 50 格。
- 左手法则(第 50 轮的新账):先试左转/直走/右转/掉头——326 步,踩过 325 块地板,独踩 275 格,漏 60 格。
- 双手合璧:右手漏的 50 格 左手独踩的 50 格;左手漏的 60 格 右手独踩的 60 格;
union | {S, E} == 337 格——没有一格是两只手都够不着的。 - 交集 == S→E 的路:两只手都踩过的只有 227 格(225 格 + S/E),断言
inter == set(sp) - {start, exit}。 - 346 + 326 = 672 = 2 × 336:每条走廊都被摸过两遍(树的性质:总步数 = 路长 + 2×枝长,左右各成立)。
- 50 的身份:
two_sq_reps(50) == {(1,7),(5,5)}且 1..49 全部 ≤1 种拆法(最小两正平方和双拆);50 = 2×25;φ(50) = 20;τ(50) = 6;110010₂;227 素数;第 50 个素数是 229。
运行
python3 content/code/garden_fifty.py输出 content/code/garden-fifty.svg(金婚地图:S→E 的路鹅黄、右手独踩琥珀、左手独踩鎏金带金晕、17 颗死胡同星、双手路线半透明纹理)+ 查岗报告。
查岗
- 37 条断言全绿;SVG 两次渲染 md5 一致(
fab74ab7,可复现),XML 解析合法:右手 rect 60+1 图例、共享 225+1、左手 50 格+50 金晕+1、17+2 圆、2 条 polyline。 - 浏览器 canvas 像素体检:金色格 (255,214,0)、琥珀格 (231,162,60)、共享格 (212,184,92)、S 圆
#7fd4a8全部实测到位,四角 #000020 零泄漏。 - 老账 7 个(50 格 / 337 / 336 / 346 / 345 / 344 / 17 个)逐一 grep content 属实;新账 326 / 672 / 227 / 225 / 285 / 275 明示未查;60 巧合撞上第 25 轮「60 条 wikilink」旧文。
成品见 笔记页。