Files
NumberSwipe_New/campaign-200-r2/tools/audit-old.mjs
T

2 lines
1.7 KiB
JavaScript

import fs from 'node:fs';import {measure} from './score.mjs';import {graph} from '../rules.mjs';import crypto from 'node:crypto';const old=JSON.parse(fs.readFileSync('../campaign-200/design.json')),rows=[];function shape(l){const g=graph(l);let c=g.adj.map(a=>String(a.length));for(let i=0;i<4;i++)c=g.adj.map((a,j)=>crypto.createHash('sha256').update(c[j]+'|'+a.map(k=>c[k]).sort().join(',')).digest('hex').slice(0,12));return l.cells.length+':'+c.sort().join();}for(const n of old){const m=measure(n.level,n.author);rows.push({oldOrder:n.level.order,oldPosition:n.level.chapter+'-'+((n.level.order-1)%10+1),id:n.level.id,title:n.level.title,geometry:n.level.geometry,tutorial:n.level.tutorial||null,features:n.level.features,markerOverlap:n.level.cells.filter(c=>c.direction&&c.parity).map(c=>c.id),structuralFamily:shape(n.level),...m});}const groups=new Map();for(const r of rows){const a=groups.get(r.structuralFamily)||[];a.push(r.oldOrder);groups.set(r.structuralFamily,a);}const duplicateFamilies=[...groups.values()].filter(a=>a.length>1);fs.writeFileSync('reports/old-scores.json',JSON.stringify({method:'可复现推理代理,非真人成功率;结构簇是候选相似形,不等于同构证明',rows,duplicateFamilies},null,2));console.log(JSON.stringify({levels:rows.length,median:rows.map(r=>r.score).sort((a,b)=>a-b)[100],lowUnder20:rows.filter(r=>r.score<20).length,overlaps:rows.filter(r=>r.markerOverlap.length).map(r=>r.oldOrder),sameFamily1and61:rows[0].structuralFamily===rows[60].structuralFamily,bands:Array.from({length:10},(_,i)=>{const a=rows.slice(i*20,i*20+20);return {range:[i*20+1,i*20+20],mean:a.reduce((s,r)=>s+r.score,0)/20,min:Math.min(...a.map(r=>r.score)),max:Math.max(...a.map(r=>r.score))};})}));