summaryrefslogtreecommitdiff
path: root/2025/01/rust/src/main.rs
diff options
context:
space:
mode:
authormhsn <mail@mhsn.net>2025-12-02 21:34:06 +0000
committermhsn <mail@mhsn.net>2025-12-02 21:34:06 +0000
commita9652699e602a2656aaa295d12b4530b42432c5f (patch)
tree13bb3cf20417c5f5887a94b3e211eba0492c67c2 /2025/01/rust/src/main.rs
parent722348968e0433d245d96fdbc82fc5311d02505a (diff)
downloadaoc-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.rs25
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}");
+}