diff options
Diffstat (limited to '2025/01/rust/src/main.rs')
| -rw-r--r-- | 2025/01/rust/src/main.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/2025/01/rust/src/main.rs b/2025/01/rust/src/main.rs new file mode 100644 index 0000000..72b718b --- /dev/null +++ b/2025/01/rust/src/main.rs @@ -0,0 +1,25 @@ +use num::BigUint; +use std::io; + +fn main() { + let mut curr = 50; + let mut silver: u64 = 0; + let mut gold: BigUint = BigUint::ZERO; + io::stdin() + .lines() + .flatten() + .map(|line| match line.split_at(1) { + ("L", n) => -n.parse::<i64>().unwrap(), + (_, n) => n.parse::<i64>().unwrap(), + }) + .for_each(|n| { + let prev = curr; + curr += n; + gold += (curr.abs() / 100) as u64 + (prev != 0 && curr <= 0) as u64; + curr = curr.rem_euclid(100); + silver += (curr == 0) as u64; + }); + + println!("silver: {silver}"); + println!("gold: {gold}"); +} |
