day 2 part 1

This commit is contained in:
mtrx 2024-12-04 23:15:42 +01:00
parent 95c3c6131a
commit ccf3e827a9
2 changed files with 34 additions and 4 deletions

View file

@ -7,9 +7,12 @@ class DayOne implements Solvable {
input = readInput('01')
public part1(): DayOne {
const vals = this.input.trim().split("\n").map(line => line.split(' '))
const left = vals.map(line => Number.parseInt(line[0])).sort()
const right = vals.map(line => Number.parseInt(line[1])).sort()
const vals = this.input
.trim()
.split("\n")
.map(line => line.split(' ').map(col => Number.parseInt(col)))
const left = vals.map(line => line[0]).sort()
const right = vals.map(line => line[1]).sort()
const diff: number[] = []
left.forEach((left, idx) => {

View file

@ -7,7 +7,34 @@ class DayTwo implements Solvable {
input = readInput('02')
public part1(): DayTwo {
console.log("test")
const reports = this.input.trim().split("\n").map(line => line.split(' ').map(level => Number.parseInt(level)))
const slidingWindow = (levels: number[]): boolean => {
const gradients: ("ascending" | "descending")[] = []
let [i,j] = [0,1]
while (j < levels.length) {
// is unsafe if ascent / descend bigger than 3 or smaller than 1
const diff = Math.abs(levels[i] - levels[j])
if (diff > 3 && diff < 1) {
return false
}
// calculate positive or negative gradient
if (levels[i] < levels[j]) {
gradients.push("ascending")
} else if (levels[i] > levels[j]) {
gradients.push("descending")
} else {
return false
}
i++
j++
}
// is safe and constant gradient?
const constantGradient = gradients.every((gradient) => gradient === "ascending") || gradients.every((gradient) => gradient === "descending")
return constantGradient
}
const result = reports.map(levels => slidingWindow(levels)).filter(level_safe => level_safe === true).length
console.log(result)
return this
}
public part2(): DayTwo {