Skip to content

Commit 7230e69

Browse files
authored
2025 days 1-4 (#84)
1 parent 49a7da2 commit 7230e69

File tree

16 files changed

+233
-0
lines changed

16 files changed

+233
-0
lines changed

2025/01/.gitkeep

Whitespace-only changes.

2025/01/dy-tea.v

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import os
2+
import math
3+
4+
// part 1
5+
lines := os.read_lines('rotations.input')!
6+
mut dial := 50
7+
mut count := 0
8+
for line in lines {
9+
dir := line[0]
10+
turns := line[1..].int()
11+
dial += turns * if dir == `L` { -1 } else { 1 }
12+
for dial > 99 {
13+
dial -= 100
14+
}
15+
for dial < 0 {
16+
dial += 100
17+
}
18+
if dial == 0 {
19+
count++
20+
}
21+
}
22+
println(count)
23+
24+
// part 2
25+
dial = 50
26+
count = 0
27+
for line in lines {
28+
dir := line[0]
29+
turns := line[1..].int()
30+
delta := turns * if dir == `L` { -1 } else { 1 }
31+
dial += delta
32+
if delta < 0 {
33+
if dial >= 0 {
34+
if dial == 0 {
35+
count++
36+
}
37+
continue
38+
}
39+
if dial - delta != 0 {
40+
count++
41+
}
42+
dial = math.abs(dial)
43+
count += dial / 100
44+
dial = (100 - dial % 100) % 100
45+
} else {
46+
count += dial / 100
47+
dial %= 100
48+
}
49+
}
50+
println(count)

2025/01/rotations.input

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
L68
2+
L30
3+
R48
4+
L5
5+
R60
6+
L55
7+
L1
8+
L99
9+
R14
10+
L82

2025/02/.gitkeep

Whitespace-only changes.

2025/02/dy-tea.v

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import os
2+
3+
line := os.read_lines('ids.input')![0]
4+
items := line.split(',')
5+
6+
// part 1
7+
mut sum := u64(0)
8+
for item in items {
9+
left, right := item.split_once('-') or { panic('invalid input') }
10+
start := left.u64()
11+
end := right.u64()
12+
for i in start .. end + 1 {
13+
s := i.str()
14+
if s.len % 2 == 0 {
15+
if s[0..s.len / 2] == s[s.len / 2..s.len] {
16+
sum += i
17+
}
18+
}
19+
}
20+
}
21+
println(sum)
22+
23+
// part 2
24+
sum = 0
25+
for item in items {
26+
left, right := item.split_once('-') or { panic('invalid input') }
27+
start := left.u64()
28+
end := right.u64()
29+
for i in start .. end + 1 {
30+
s := i.str()
31+
for x in 1 .. s.len / 2 + 1 {
32+
if s.len % x == 0 {
33+
if s[0..x].repeat(s.len / x) == s {
34+
sum += i
35+
break
36+
}
37+
}
38+
}
39+
}
40+
}
41+
println(sum)

2025/02/ids.input

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124

2025/03/.gitkeep

Whitespace-only changes.

2025/03/banks.input

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
987654321111111
2+
811111111111119
3+
234234234234278
4+
818181911112111

2025/03/dy-tea.v

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import os
2+
3+
lines := os.read_lines('banks.input')!
4+
5+
// part 1
6+
mut sum := u64(0)
7+
for line in lines {
8+
mut max := 0
9+
l := line.runes()
10+
for i, x in l {
11+
for y in l[i + 1..] {
12+
dig := '${x}${y}'.int()
13+
if dig > max {
14+
max = dig
15+
}
16+
}
17+
}
18+
sum += u64(max)
19+
}
20+
println(sum)
21+
22+
// part 2
23+
sum = 0
24+
for line in lines {
25+
mut max := u64(0)
26+
mut prev := 0
27+
l := line.runes()
28+
for i in 0 .. 12 {
29+
mut dig := 0
30+
for j in prev .. (l.len - 11 + i) {
31+
c := l[j].str().int()
32+
if dig >= c {
33+
continue
34+
}
35+
dig = c
36+
prev = j + 1
37+
if dig == 9 {
38+
break
39+
}
40+
}
41+
max = max * u64(10) + u64(dig)
42+
}
43+
sum += max
44+
}
45+
println(sum)

2025/04/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)