summaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2024-12-01 13:19:48 +0100
committerReiner Herrmann <reiner@reiner-h.de>2024-12-01 13:20:13 +0100
commit940752350bb1393fdf8f119c82273f12ebb97545 (patch)
tree3e328ead6fdb53d677b3c38064d11e59f97dbeb5 /src/bin
parent73016c47e3d4ce0624ea8169cc8f14a2559e080a (diff)
day1 solution 1
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/day1.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/bin/day1.rs b/src/bin/day1.rs
new file mode 100644
index 0000000..d0c9bae
--- /dev/null
+++ b/src/bin/day1.rs
@@ -0,0 +1,42 @@
+static DAY: u8 = 1;
+
+fn main() {
+ let input = advent::read_lines(DAY);
+ println!("{DAY}a: {}", list_distance(&input));
+ println!("{DAY}b: {}", 0);
+}
+
+fn list_distance(numbers: &[String]) -> u32 {
+ let mut list1 = Vec::new();
+ let mut list2 = Vec::new();
+ for pair in numbers {
+ let (number1, number2) = pair.split_once(" ").unwrap();
+ list1.push(number1.parse::<u32>().unwrap());
+ list2.push(number2.parse::<u32>().unwrap());
+ }
+ list1.sort();
+ list2.sort();
+
+ list1.iter()
+ .enumerate()
+ .map(|(i, number1)| number1.abs_diff(list2[i]))
+ .sum()
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test() {
+ let input = [
+ "3 4",
+ "4 3",
+ "2 5",
+ "1 3",
+ "3 9",
+ "3 3",
+ ].iter().map(|&x| String::from(x)).collect::<Vec<_>>();
+ assert_eq!(list_distance(&input), 11);
+ }
+}