Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Advent of Code 2024 - Day 3
- const fs = require("fs")
- const input = fs.readFileSync(__dirname + (process.argv.includes("--test") ? "/test.txt" : "/input.txt"), "utf8")
- const parseInput = (rawInput) => {
- return rawInput.split("\n")
- }
- const part1 = (str) => {
- const regex = /mul\((\d{1,3}),(\d{1,3})\)/g
- let sum = 0
- let match
- while ((match = regex.exec(str)) !== null) {
- sum += parseInt(match[1]) * parseInt(match[2])
- }
- return sum
- }
- const part2 = (str) => {
- const regex = /do\(\)|don't\(\)|mul\((\d{1,3}),(\d{1,3})\)/g
- let enabled = true
- let sum = 0
- let match
- while ((match = regex.exec(str)) !== null) {
- if (match[0] === "do()") enabled = true
- else if (match[0] === "don't()") enabled = false
- else if (enabled) sum += parseInt(match[1]) * parseInt(match[2])
- }
- return sum
- }
- const data = parseInput(input)
- console.time("Part 1 Time")
- console.log("Part 1:", part1(data))
- console.timeEnd("Part 1 Time")
- console.time("Part 2 Time")
- console.log("Part 2:", part2(data))
- console.timeEnd("Part 2 Time")
Advertisement
Add Comment
Please, Sign In to add comment