From bc6048a728d84597a77ba18ccb88e0e9dd691d20 Mon Sep 17 00:00:00 2001 From: Doruk Gurleyen Date: Wed, 6 Dec 2023 00:22:18 -0500 Subject: [PATCH] 2023.06 --- challenges/2023/06.js | 48 +++++++++++++++++++++++++++++++++++ challenges/2023/inputs/06.txt | 2 ++ 2 files changed, 50 insertions(+) create mode 100644 challenges/2023/06.js create mode 100644 challenges/2023/inputs/06.txt diff --git a/challenges/2023/06.js b/challenges/2023/06.js new file mode 100644 index 0000000..edd8b44 --- /dev/null +++ b/challenges/2023/06.js @@ -0,0 +1,48 @@ +// Part 1 +const solvePuzzle1 = (input) => { + const [times, distances] = input.split('\n').map((line) => { + return line + .split(':')[1] + .split(/\s+/) + .filter((num) => !!num[0]) + .map(Number); + }); + + let winning = 1; + + for (let i = 0; i < times.length; i++) { + const time = times[i]; + const distanceRecord = distances[i]; + let currentWinning = 0; + + for (let m = time - 1; m >= 0; m--) { + if ((time - m) * m > distanceRecord) { + currentWinning++; + } + } + + currentWinning && (winning *= currentWinning); + } + + return winning; +}; + +// Part 2 +const solvePuzzle2 = (input) => { + const [time, distanceRecord] = input.split('\n').map((line) => { + return Number(line.split(':')[1].split(/\s+/).join('')); + }); + + let winning = 0; + + for (let m = time - 1; m >= 0; m--) { + if ((time - m) * m > distanceRecord) { + winning++; + } + } + + return winning; +}; + +require(__dirname + '/../../utils/test.js').test(__filename, __dirname, solvePuzzle1, '1'); +require(__dirname + '/../../utils/test.js').test(__filename, __dirname, solvePuzzle2, '2'); diff --git a/challenges/2023/inputs/06.txt b/challenges/2023/inputs/06.txt new file mode 100644 index 0000000..8322606 --- /dev/null +++ b/challenges/2023/inputs/06.txt @@ -0,0 +1,2 @@ +Time: 47 98 66 98 +Distance: 400 1213 1011 1540 \ No newline at end of file