summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2024-12-03 17:51:24 +0100
committerReiner Herrmann <reiner@reiner-h.de>2024-12-03 17:51:24 +0100
commit00aebf045590210f4e83a508eec573b2f0558c9d (patch)
tree2df97fab82c965a6b3762372fbad3efc5d11d405 /src
parent06835ff1a9d00834d6070a6c9d361e8e731519b4 (diff)
day3 solution 1
Diffstat (limited to 'src')
-rw-r--r--src/bin/day3.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/bin/day3.rs b/src/bin/day3.rs
new file mode 100644
index 0000000..02cb385
--- /dev/null
+++ b/src/bin/day3.rs
@@ -0,0 +1,36 @@
+use regex::Regex;
+
+static DAY: u8 = 3;
+
+fn main() {
+ let input = advent::read_lines(DAY);
+ println!("{DAY}a: {}", sum_multiplications(&input));
+ println!("{DAY}b: {}", 0);
+}
+
+fn sum_multiplications(input: &[String]) -> u32 {
+ let re = Regex::new(r"mul\(([0-9]{1,3}),([0-9]{1,3})\)").unwrap();
+
+ let mut sum = 0;
+ for line in input {
+ for cap in re.captures_iter(line) {
+ let f1 = cap[1].parse::<u32>().unwrap();
+ let f2 = cap[2].parse::<u32>().unwrap();
+ sum += f1 * f2;
+ }
+ }
+ sum
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test() {
+ let input = [
+ "xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))"
+ ].iter().map(|&x| String::from(x)).collect::<Vec<_>>();
+ assert_eq!(sum_multiplications(&input), 161);
+ }
+}