/* 779-4 엑셀 보기 창 칠 · 뛸 곳 헬퍼 — `logic/M02_MasterTemplete_Hopyo_SheetMap.ts`(순수)를 트랜스파일해 Node 로 돌림. * stdin = {grid(책 뺀 격자), briefs, blocks, drafts{번: 캐시}, tones[[상태, 체크, 캐시, 차례]], at[[시트, 행]]} * stdout = {tones[{tone, mine}], blocks[{tone, 글}], jumps[[Jump]], paint{시트: {행: 꼴}}} JSON. */ const path = require("path"); const { makeLoader } = require("./helper_ts_stub_loader.cjs"); const ROOT = path.join(__dirname, "..", ".."); const { loadTs } = makeLoader({ root: ROOT }); const map = loadTs( path.join(ROOT, "M02_MasterTemplete", "logic", "M02_MasterTemplete_Hopyo_SheetMap.ts"), ); let raw = ""; process.stdin.on("data", (c) => (raw += c)); process.stdin.on("end", () => { const input = JSON.parse(raw); const out = { tones: (input.tones ?? []).map(([s, c, d, at]) => map.lineTone(s, c, d, at)), blocks: (input.blockTones ?? []).map((m) => map.blockTone(m ?? undefined)), }; if (input.grid) { const ix = map.indexOf(input.grid); out.jumps = (input.at ?? []).map(([sheet, row]) => map.jumpsAt(ix, sheet, row)); const paint = map.paintOf( ix, input.briefs ?? [], input.blocks ?? [], (no) => (input.drafts ?? {})[no] ?? null, ); out.misses = map.missesOf(ix, input.blocks ?? []); // 778-5 D-6 out.paint = Object.fromEntries( [...paint].map(([sheet, rows]) => [ sheet, Object.fromEntries([...rows].map(([r, m]) => [r, m.tone])), ]), ); } process.stdout.write(JSON.stringify(out)); });