Skip to content

Commit b4316b7

Browse files
authored
leodev, day 02 (#51)
1 parent b5eabb1 commit b4316b7

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

2024/02/leodev.v

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import os
2+
3+
fn main() {
4+
content := os.read_file('reports.input')!
5+
lines := content.split_into_lines()
6+
7+
mut safe1 := 0
8+
mut safe2 := 0
9+
for line in lines {
10+
levels := line.split(' ').map(it.int())
11+
if is_safe(levels) {
12+
safe1++
13+
safe2++
14+
} else {
15+
for i in 0 .. levels.len {
16+
mut clone := levels.clone()
17+
clone.delete(i)
18+
if is_safe(clone) {
19+
safe2++
20+
break
21+
}
22+
}
23+
}
24+
}
25+
26+
println('part1: ${safe1}')
27+
println('part2: ${safe2}')
28+
}
29+
30+
fn is_safe(levels []int) bool {
31+
desc := levels[0] > levels[1]
32+
for i in 1 .. levels.len {
33+
prev := levels[i - 1]
34+
current := levels[i]
35+
if (prev > current) != desc {
36+
return false
37+
}
38+
delta := prev - current
39+
if delta == 0 || delta > 3 || delta < -3 {
40+
return false
41+
}
42+
}
43+
return true
44+
}

2024/02/reports.input

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
7 6 4 2 1
2+
1 2 7 8 9
3+
9 7 6 2 1
4+
1 3 2 4 5
5+
8 6 4 4 1
6+
1 3 6 7 9

known/2024/02/leodev.out

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
part1: 2
2+
part2: 4

0 commit comments

Comments
 (0)