import fs from 'node:fs';import {solve,constraints,violations} from '../rules.mjs'; export function attachTutorials(pack,notes,root){const tutorials=JSON.parse(fs.readFileSync(new URL('../tutorials.json',import.meta.url),'utf8'));const originals=pack.levels.filter(l=>!l.tutorial);pack.levels=[...originals,...tutorials];pack.playOrder=[];for(const l of originals){if(l.order===11)pack.playOrder.push('tutorial-straight','tutorial-corner');if(l.order===16)pack.playOrder.push('tutorial-colour');pack.playOrder.push(l.id);}pack.title='数字一笔 · 53关DEMO';pack.version='demo-2026-10-14-v2';for(const l of tutorials){if(notes.some(n=>n.level.id===l.id))continue;const paths=solve(l);if(paths.length!==1)throw Error('引导不唯一');const author=paths[0],witnesses=constraints(l).map(c=>{const path=solve(l,{omit:c.key,limit:Infinity}).find(p=>p.join()!==author.join()&&violations(l,p).some(v=>v.key===c.key));if(!path)throw Error('引导规则没有实际影响');return {constraint:c.key,path};});notes.push({level:l,author,witnesses,metrics:{noImmediateConflictChoices:1,longestSameDirectionTransfers:2,scope:'引导关,不作真人难度评分'},planningIntent:l.caption,difficultyStatus:'非常简单的规则教学,待试玩确认'});}return pack;}