this repo has no description

day1: code gold

+5 -23
+5 -23
src/main.rs
··· 5 5 times_crossed: i32, 6 6 } 7 7 8 - fn split_line(line: &str) -> (&str, i32) { 9 - let (dir, num) = line.split_at(1); 10 - (dir, num.parse::<i32>().unwrap()) 11 - } 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 - let (dir, num) = split_line(line); 22 - acc.times_crossed += match dir { 23 - "L" => { 24 - let old_sum = acc.sum; 25 - acc.sum -= num; 26 - if old_sum != 0 && acc.sum < 0 { 1 } else { 0 } 27 - } 28 - "R" => { 29 - acc.sum += num; 30 - 0 31 - } 32 - _ => unreachable!(), 33 - }; 34 - if acc.sum == 0 { 35 - acc.times_crossed += 1; 36 - } else { 37 - acc.times_crossed += (acc.sum / 100).abs(); 38 - } 16 + let n: i32 = line[1..].parse().unwrap(); 17 + let old = acc.sum; 18 + acc.sum += if &line[..1] == "L" { -n } else { n }; 19 + acc.times_crossed += (old > 0 && acc.sum < 0) as i32 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 },