diff options
Diffstat (limited to '2024_rust/src/day1.rs')
-rw-r--r-- | 2024_rust/src/day1.rs | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/2024_rust/src/day1.rs b/2024_rust/src/day1.rs deleted file mode 100644 index 0b6c13d..0000000 --- a/2024_rust/src/day1.rs +++ /dev/null @@ -1,45 +0,0 @@ -pub fn p1(input: &str) -> String { - let mut left: Vec<u32> = vec![]; - let mut right: Vec<u32> = vec![]; - for line in input.lines() { - let mut fields = line.split_whitespace(); - let e = "Wrong file format"; - left.push(fields.next().expect(e).parse().expect(e)); - right.push(fields.next().expect(e).parse().expect(e)); - } - left.sort_unstable(); - right.sort_unstable(); - - let mut distance: u32 = 0; - for i in 0..left.len() { - let l = left[i]; - let r = right[i]; - distance += if l >= r { l - r } else { r - l }; - } - - distance.to_string() -} - -use std::collections::HashMap; - -pub fn p2(input: &str) -> String { - let mut left: Vec<u32> = vec![]; - let mut right: HashMap<u32, u32> = HashMap::new(); - for line in input.lines() { - let mut fields = line.split_whitespace(); - let e = "Wrong file format"; - left.push(fields.next().expect(e).parse().expect(e)); - let r: u32 = fields.next().expect(e).parse().expect(e); - match right.get(&r) { - None => right.insert(r, 1), - Some(v) => right.insert(r, v + 1), - }; - } - - let mut distance: u32 = 0; - for l in left { - distance += l * right.get(&l).unwrap_or(&0); - } - - distance.to_string() -} |