diff options
| author | mhsn <mail@mhsn.net> | 2025-12-02 21:34:06 +0000 |
|---|---|---|
| committer | mhsn <mail@mhsn.net> | 2025-12-02 21:34:06 +0000 |
| commit | a9652699e602a2656aaa295d12b4530b42432c5f (patch) | |
| tree | 13bb3cf20417c5f5887a94b3e211eba0492c67c2 /2025/01/rust/src/main.rs | |
| parent | 722348968e0433d245d96fdbc82fc5311d02505a (diff) | |
| download | aoc-a9652699e602a2656aaa295d12b4530b42432c5f.tar.gz aoc-a9652699e602a2656aaa295d12b4530b42432c5f.zip | |
25-01 rust both
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}"); +} |
