import assert from 'node:assert/strict'; const input = [[0,0],[1,2],[250,10],[255,255], [128,128],[17,240],[90,90],[4,8]]; const q = [], expected = [], seen = []; let s1 = null, s2 = null, issued = 0, delivered = 0; for (let edge = 0; edge < 50; edge++) { const ready = edge >= 25 || ![2,3,4].includes(edge % 7); const old1 = s1, old2 = s2; const r2 = old2 === null || ready; const r1 = old1 === null || r2; const pop = q.length > 0 && r1; const inReady = q.length < 2 || pop; if (old2 !== null && ready) { assert.deepEqual(old2, expected.shift()); seen.push(old2.y); delivered++; } const n2 = r2 ? (old1 === null ? null : { tag: old1.tag, y: old1.sum * 3 % 256 }) : old2; const n1 = r1 ? (pop ? { tag: q[0].tag, sum: q[0].a + q[0].b } : null) : old1; if (pop) q.shift(); if (issued < input.length && inReady) { const [a,b] = input[issued]; q.push({ tag: issued, a, b }); expected.push({ tag: issued, y: (3*a + 3*b) % 256 }); issued++; } s1 = n1; s2 = n2; if (old2 !== null && !ready) assert.deepEqual(s2, old2); assert.ok(q.length <= 2); assert.equal(issued - delivered, q.length + Number(s1 !== null) + Number(s2 !== null)); } assert.equal(issued, input.length); assert.equal(delivered, input.length); assert.deepEqual(seen, [0,9,12,250,0,3,28,36]); assert.equal(expected.length + q.length, 0); assert.equal(s1, null); assert.equal(s2, null); console.log('CAPSTONE PASS: 8 ordered outputs, drained');