mosredna

AoC 2022 day 10

Dec 10th, 2022 (edited)
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 0.88 KB | Source Code | 0 0
  1. const fs = require('fs');
  2. const eol = require('os').EOL;
  3.  
  4. const startTime = new Date().getTime();
  5. let part1 = part2 = 0;
  6. let input = fs.readFileSync(__dirname + "/data.txt", 'utf8').split(eol).map(a => a.split(" ")).reverse();
  7.  
  8. let wait = false;
  9. let cycle = spritePos = 1;
  10. let cmd, val;
  11. let pixel = 0;
  12. let lines = '';
  13.  
  14. while (input.length || wait) {
  15.     if (!wait && input.length)[cmd, val] = input.pop();
  16.     if (cycle % 40 == 20) {
  17.         part1 += spritePos * cycle;
  18.     }
  19.     Math.abs(spritePos - pixel) <= 1 ? lines += "#" : lines += "."
  20.     if (++pixel == 40) {
  21.         pixel = 0;
  22.         lines += "\n"
  23.     }
  24.     if (wait) {
  25.         spritePos += +val;
  26.         wait = false
  27.     } else if (cmd == "addx") wait = true;
  28.     cycle++;
  29. }
  30. console.log(lines);
  31. let time = new Date().getTime() - startTime
  32. console.log(`Part 1: ${part1}\nPart 2: ${part2}\nTimer: ${time} ms`);
Advertisement
Add Comment
Please, Sign In to add comment