Skip to content

Commit 28b10d2

Browse files
day 5 solutions
1 parent 2b01718 commit 28b10d2

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
const input = Deno.readTextFileSync("./day05.txt").trim().split("\n\n")
2+
const ranges = input[0].split("\n").map(r => r.split("-").map(i => parseInt(i)))
3+
const ids = input[1].split("\n").map(i => parseInt(i))
4+
5+
let count = 0
6+
7+
for (const id of ids) {
8+
for (const range of ranges) {
9+
if (id >= range[0] && id <= range[1]) {
10+
count++
11+
break
12+
}
13+
}
14+
}
15+
16+
console.log(count)
17+
18+
count = 0
19+
20+
ranges.sort((a,b) => a[0] != b[0] ? a[0] - b[0] : a[1] - b[1])
21+
22+
/*
23+
Old idea for part 2 I couldn't make work
24+
25+
for (let i = 0; i < ranges.length - 1; i++) {
26+
const a = ranges[i]
27+
const b = ranges[i+1]
28+
29+
if (b[1] <= a[1]) ranges.splice(i+1,1)
30+
else if (b[0] <= a[1]) ranges[i][1] = b[0] - 1
31+
}
32+
33+
for (const range of ranges) {
34+
count += range[1] - range[0] + 1
35+
}
36+
*/
37+
38+
const fresh = []
39+
40+
for (const range of ranges) {
41+
const start = range[0]
42+
const end = range[1]
43+
44+
let incorporated = false
45+
for (let i = 0; i < fresh.length; i++) {
46+
const r = fresh[i]
47+
const rs = r[0]
48+
const re = r[1]
49+
50+
if (rs <= start && start <= re && end > re) {
51+
fresh[i][1] = end
52+
incorporated = true
53+
break
54+
} else if (rs <= end && end <= re && start < rs) {
55+
fresh[i][0] = start
56+
incorporated = true
57+
break
58+
} else if (rs <= start && start <= re && rs <= start && start <= re) {
59+
incorporated = true
60+
break
61+
} else if (start < rs && re < end) {
62+
fresh[i][0] = start
63+
fresh[i][1] = end
64+
incorporated = true
65+
break
66+
}
67+
}
68+
69+
if (!incorporated) {
70+
fresh.push(range)
71+
}
72+
}
73+
74+
for (const range of fresh) {
75+
count += range[1] - range[0] + 1
76+
}
77+
78+
console.log(count)

0 commit comments

Comments
 (0)