import fs from 'node:fs';const old=JSON.parse(fs.readFileSync('reports/old-scores.json')),pack=JSON.parse(fs.readFileSync('levels.json')),notes=JSON.parse(fs.readFileSync('design.json')),anchors=JSON.parse(fs.readFileSync('reports/player-anchors.json'));const current=notes.map(n=>({order:n.level.order,position:Math.ceil(n.level.order/10)+'-'+((n.level.order-1)%10+1),title:n.level.title,geometry:n.level.geometry,features:n.level.features,nodes:n.level.cells.length,...n.objective,oldOrder:n.oldOrder||null,playerBand:n.playerBand||null,estimatedBand:n.level.estimatedBand,source:n.source,tutorial:n.level.tutorial||null}));const previous=old.rows.map(n=>({...n,order:n.oldOrder,position:n.oldPosition,nodes:n.nodeCount,playerBand:anchors.needHint.includes(n.oldOrder)?'需要提示':anchors.moderate.includes(n.oldOrder)?'略难':anchors.likedUnknownStart.includes(n.oldOrder)?'喜欢的未知起点':null}));const series=(rows,col)=>`
${rows.map(r=>``).join('')}
`;const bands=Array.from({length:10},(_,i)=>{const a=previous.slice(i*20,i*20+20),b=current.slice(i*20,i*20+20),mean=a=>Math.round(a.reduce((s,r)=>s+r.score,0)/a.length*10)/10;return `${i*20+1}–${i*20+20}${mean(a)}${mean(b)}`;}).join('');const html=`200关评分与重排对照

200关评分修订版:先测量,再排关

试玩修订版 · 作者解与必要性反例

评分方法与边界

采用相同、可复现的推理模型评估新旧关卡:先应用共边、数字、颜色、奇偶、方向和门规则,再排除断区、孤格、额外终点及数字距离不足;只对剩余错误路线向后探查最多8步,单分支最多12000状态。记录真实决策点、非局部分支、错误可存活深度、探查量及连续被迫步数。

展开代理分公式

分数=2log2(1+格数/3)+5log2(1+决策点)+4log2(1+存活≥3步的错分支)+6×平均错路深度+3log2(1+探查状态/10)−5×被迫步占比,四舍五入并限制在0–100。被8步/状态预算截断的深度是下界;原始指标同时保留,不以随机搜索顺序或仅格数评分。

它不是玩家通关率,也不能保证“大部分玩家都会卡住”。本次用户反馈已证明个体差异:旧144关代理36分但需要提示,旧149关65分却略难。因此已试玩标签单独保存,优先于代理分;新关分档均标作候选,不伪称实测。

同模型的新旧曲线

旧版

${series(previous,'#a3a5b5')}

修订版;橙色为首次机制教学

${series(current,'#6558f5')}${bands}
关段旧版均分修订均分

个人反馈锚点

需提示(想很久、点击指路才流畅):8-3/73、8-6/76、8-7/77、8-10/80、9-5/85、9-8/88、15-4/144。略难:15-9/149、16-8/158。喜欢的无起点:12-1/111、14-6/136。

原73→新38,76→48,77→58,85→78;111→65,136→105;149→109,158→119。旧80、88、144的六边组合主题通过宽盘面新关保留,原条带几何不再使用。

100关后:80个略难候选/个人略难参照,17个深想候选,3个未知起点;未知起点替代挑战名额。全200关无起点共5个,相隔至少20关。

逐关评分与来源

关标题/玩法代理分格决策非局部分支错路深度标签/来源
`;fs.writeFileSync('SCORES.html',html);fs.writeFileSync('DIFFICULTY.html',html);fs.writeFileSync('reports/new-scores.json',JSON.stringify({method:'reasoner-v1',rows:current},null,2));console.log('Built score comparison and per-level ranking.');