This commit is contained in:
2024-12-12 00:43:26 +01:00
parent 48f1604ed2
commit d867d69f79
2 changed files with 55 additions and 0 deletions

27
Day 07/Part 1/index.ts Normal file
View File

@@ -0,0 +1,27 @@
import fs from 'node:fs';
export default function runner(input: string) {
fs.readFile(`./${input}`, 'utf8', (err, data) => {
if (err) throw err;
let sum = 0;
data.split('\n').forEach(line => {
const [result, equators] = line.split(": ")
const factors = (equators??"").split(" ")
if(calculate(parseInt(result??""), factors.map(value => parseInt(value)))) sum += parseInt(result??"")
})
console.log(sum)
})
}
function calculate(result: number, factors: number[]): boolean{
return math(result, factors, 0, 0);
}
function math(result: number, factors: number[], index: number, runningTotal: number): boolean {
if(index === factors.length) return result === runningTotal;
const add = math(result, factors, index+1, runningTotal+(factors[index]??1))
const mult = math(result, factors, index+1, runningTotal*(factors[index]??1))
return add||mult;
}

28
Day 07/Part 2/index.ts Normal file
View File

@@ -0,0 +1,28 @@
import fs from 'node:fs';
export default function runner(input: string) {
fs.readFile(`./${input}`, 'utf8', (err, data) => {
if (err) throw err;
let sum = 0;
data.split('\n').forEach(line => {
const [result, equators] = line.split(": ")
const factors = (equators??"").split(" ")
if(calculate(parseInt(result??""), factors.map(value => parseInt(value)))) sum += parseInt(result??"")
})
console.log(sum)
})
}
function calculate(result: number, factors: number[]): boolean{
return math(result, factors, 0, 0);
}
function math(result: number, factors: number[], index: number, runningTotal: number): boolean {
if(index === factors.length) return result === runningTotal;
const add = math(result, factors, index+1, runningTotal+(factors[index]??1))
const mult = math(result, factors, index+1, runningTotal*(factors[index]??1))
const concat = math(result, factors, index+1, parseInt(runningTotal + "" + (factors[index]??1)))
return add||mult||concat;
}