part-02.ts (943B)
1 import { lineByLine } from './line-by-line'; 2 3 const position = { x: 0, y: 0 }; 4 let aim = 0; 5 6 (async () => { 7 8 await lineByLine(__dirname + '/input', line => { 9 if (!line) return; 10 let [command,range] = line.split(' '); 11 range = parseInt(range); 12 13 switch(command) { 14 case 'up' : aim -= range; break; 15 case 'down' : aim += range; break; 16 case 'forward': position.x += range; position.y += aim * range; break; 17 default: 18 throw new Error(`Unknown command: ${command}`); 19 } 20 }); 21 22 process.stdout.write('\n\n'); 23 process.stdout.write('---[ REPORT ]---\n'); 24 process.stdout.write('\n'); 25 process.stdout.write(`Position\n`); 26 process.stdout.write(` X: ${position.x}\n`); 27 process.stdout.write(` Y: ${position.y}\n`); 28 process.stdout.write('\n'); 29 process.stdout.write(`Puzzle\n`); 30 process.stdout.write(` mult: ${position.x * position.y}\n`); 31 process.stdout.write('\n'); 32 33 34 })(); 35