import fs from 'node:fs';import {fileURLToPath} from 'node:url';const root=new URL('../',import.meta.url),p=JSON.parse(fs.readFileSync(new URL('levels.json',root))),plan=JSON.parse(fs.readFileSync(new URL('plan.json',root))),n=JSON.parse(fs.readFileSync(new URL('design.json',root)));const names={big:'大块',direction:'方向',alternation:'双色',parity:'奇偶',walls:'墙',"rhythm-door":'门'};const bars=p.levels.map(l=>``).join('');const items=p.levels.map(l=>`
${l.order} · ${l.title}${l.chapterTitle} · ${l.role} · ${l.cells.length}格 · ${l.geometry}

${l.caption}

${l.features.map(f=>names[f]).join('+')||'基本覆盖'} · 目标${l.targetDifficulty}
`).join('');const html=`200关编排与目标曲线

200关编排与目标曲线

进入200关试玩 · 查看逐关作者解与必要性反例

20章×10关。橙色为极简教学,绿色为回落,紫色为练习与挑战。柱高是策划目标,尚未经真人难度校准。点击柱条定位关卡。

${bars}

逐关任务

${items}
`;fs.writeFileSync(new URL('DIFFICULTY.html',root),html);console.log('Built target difficulty overview.');