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