tangled
alpha
login
or
join now
tymek.me
/
aoc25
1
fork
atom
this repo has no description
1
fork
atom
overview
issues
pulls
pipelines
day1: code gold
Tim Chmielecki
3 months ago
45db0f75
b57c3503
+5
-23
1 changed file
expand all
collapse all
unified
split
src
main.rs
+5
-23
src/main.rs
···
5
5
times_crossed: i32,
6
6
}
7
7
8
8
-
fn split_line(line: &str) -> (&str, i32) {
9
9
-
let (dir, num) = line.split_at(1);
10
10
-
(dir, num.parse::<i32>().unwrap())
11
11
-
}
12
12
-
13
8
fn main() {
14
9
let content = fs::read_to_string("inputs/1.txt").expect("failed to read input file");
15
10
let res = content.lines().fold(
···
18
13
times_crossed: 0,
19
14
},
20
15
|mut acc, line| {
21
21
-
let (dir, num) = split_line(line);
22
22
-
acc.times_crossed += match dir {
23
23
-
"L" => {
24
24
-
let old_sum = acc.sum;
25
25
-
acc.sum -= num;
26
26
-
if old_sum != 0 && acc.sum < 0 { 1 } else { 0 }
27
27
-
}
28
28
-
"R" => {
29
29
-
acc.sum += num;
30
30
-
0
31
31
-
}
32
32
-
_ => unreachable!(),
33
33
-
};
34
34
-
if acc.sum == 0 {
35
35
-
acc.times_crossed += 1;
36
36
-
} else {
37
37
-
acc.times_crossed += (acc.sum / 100).abs();
38
38
-
}
16
16
+
let n: i32 = line[1..].parse().unwrap();
17
17
+
let old = acc.sum;
18
18
+
acc.sum += if &line[..1] == "L" { -n } else { n };
19
19
+
acc.times_crossed += (old > 0 && acc.sum < 0) as i32
20
20
+
+ if acc.sum == 0 { 1 } else { (acc.sum / 100).abs() };
39
21
acc.sum = acc.sum.rem_euclid(100);
40
22
acc
41
23
},