diff --git a/src/day1/main.rs b/src/day1/main.rs index 7e827c6..424234a 100644 --- a/src/day1/main.rs +++ b/src/day1/main.rs @@ -1,36 +1,18 @@ use anyhow::Result; -use std::{fs, num}; +use std::fs; fn main() -> Result<()> { - println!("Hello, world!"); - let (count, extra, _) = fs::read_to_string("src/day1/day1-act.txt")? .split("\n") .filter(|s| s.len() > 0) .fold((0, 0, 50 as i32), |(sum, e, p), s| { - let modi = if s.chars().nth(0).unwrap() == 'R' { - 1 - } else { - -1 - }; + let modi = 1 + (-2 * (s.chars().nth(0).unwrap() == 'L') as i32); let v: i32 = s[1..].parse().unwrap(); let mut nv: i32 = p + (v % 100) * modi; - let mut extra = v / 100; - if nv < 0 { - nv = 100 + nv; - if p != 0 { - extra += 1; - } - } else if nv == 100 { - nv = nv - 100; - } else if nv > 100 { - nv = nv - 100; - if p != 0 { - extra += 1; - } - } - println!("{} - {}: {}", s, nv, extra); - (sum + (if nv == 0 { 1 } else { 0 }), e + extra, nv) + let extra = v / 100 + (p != 0 && (nv < 0 || nv > 100)) as i32; + nv = nv + 100 * (nv < 0) as i32 + -100 * (nv >= 100) as i32; + // println!("{} - {}: {}", s, nv, extra); + (sum + (nv == 0) as i32, e + extra, nv) }); println!("{} and sec {}", count, count + extra);