File tree Expand file tree Collapse file tree 1 file changed +78
-0
lines changed
AdventOfCode/aoc-2025-deno Expand file tree Collapse file tree 1 file changed +78
-0
lines changed Original file line number Diff line number Diff line change 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 )
You can’t perform that action at this time.
0 commit comments