diff --git a/Day 02/Part 1/index.ts b/Day 02/Part 1/index.ts new file mode 100644 index 0000000..11ee1ad --- /dev/null +++ b/Day 02/Part 1/index.ts @@ -0,0 +1,45 @@ +import fs from 'node:fs'; + +export default function runner(input: string) { + fs.readFile(`./${input}`, 'utf8', (err, data) => { + if (err) throw err; + let count = 0; + data.split('\n').forEach(line => { + let safe = true; + let positive = undefined; + + const spLine = line.split(' '); + if (!spLine[0] || !spLine[1]) throw new Error() + for(let i = 0; i3 || i2-i1>3 || i2-i1 == 0) { + safe = false; + continue; + } + if(i1-i2 > 0) { + if(!positive && positive !== undefined){ + safe = false; + continue; + } + positive = true; + } + if(i1-i2 < 0) { + if(positive){ + safe = false; + continue; + } + positive = false; + } + } + if(safe) count++ + console.log(`---- safe=${count} ----`) + }) + + + console.log(count) + }) +} \ No newline at end of file diff --git a/Day 02/Part 2/index.ts b/Day 02/Part 2/index.ts new file mode 100644 index 0000000..6dac7a5 --- /dev/null +++ b/Day 02/Part 2/index.ts @@ -0,0 +1,62 @@ +import fs from 'node:fs'; + +export default function runner(input: string) { + fs.readFile(`./${input}`, 'utf8', (err, data) => { + if (err) throw err; + let count = 0; + data.split('\n').forEach(line => { + const spLine = line.split(' '); + + let safe = checkIsSafe(spLine) + if(safe) count++ + if(!safe){ + let safeMinusOne = false; + for(let j = 0; j index !== j); + safeMinusOne = checkIsSafe(spLineF) + } + if(safeMinusOne) { + safe = safeMinusOne + count++ + } + } + if (safe) console.log(`---- safe=${count} ----`) + if (!safe) console.log("---- unsafe, even filtered ----") + }) + + + console.log(count) + }) +} + +function checkIsSafe(spLine:string[]){ + let safe = true; + let positive = undefined; + if (!spLine[0] || !spLine[1]) throw new Error() + for(let i = 0; i3 || i2-i1>3 || i2-i1 == 0) { + safe = false; + } + if(i1-i2 > 0) { + if(!positive && positive !== undefined){ + safe = false; + } + positive = true; + } + if(i1-i2 < 0) { + if(positive){ + safe = false; + } + positive = false; + } + console.log(`i1: ${i1} | i2: ${i2} | diff: ${i1-i2} | safe: ${safe} | positive: ${positive}`) + } + return safe; +} \ No newline at end of file