From 00aebf045590210f4e83a508eec573b2f0558c9d Mon Sep 17 00:00:00 2001 From: Reiner Herrmann Date: Tue, 3 Dec 2024 17:51:24 +0100 Subject: day3 solution 1 --- Cargo.lock | 47 +++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/bin/day3.rs | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 src/bin/day3.rs diff --git a/Cargo.lock b/Cargo.lock index 57efba6..ed9bcec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,3 +5,50 @@ version = 4 [[package]] name = "advent" version = "0.1.0" +dependencies = [ + "regex", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" diff --git a/Cargo.toml b/Cargo.toml index bb0c0e0..02de396 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,4 @@ authors = ["Reiner Herrmann "] edition = "2021" [dependencies] +regex = "1" 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::().unwrap(); + let f2 = cap[2].parse::().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::>(); + assert_eq!(sum_multiplications(&input), 161); + } +} -- cgit v1.2.3