File tree Expand file tree Collapse file tree 3 files changed +52
-0
lines changed
Expand file tree Collapse file tree 3 files changed +52
-0
lines changed Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change 1+ part1: 2
2+ part2: 4
You can’t perform that action at this time.
0 commit comments