diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2024-12-03 17:51:24 +0100 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2024-12-03 17:51:24 +0100 |
| commit | 00aebf045590210f4e83a508eec573b2f0558c9d (patch) | |
| tree | 2df97fab82c965a6b3762372fbad3efc5d11d405 | |
| parent | 06835ff1a9d00834d6070a6c9d361e8e731519b4 (diff) | |
day3 solution 1
| -rw-r--r-- | Cargo.lock | 47 | ||||
| -rw-r--r-- | Cargo.toml | 1 | ||||
| -rw-r--r-- | src/bin/day3.rs | 36 |
3 files changed, 84 insertions, 0 deletions
@@ -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" @@ -5,3 +5,4 @@ authors = ["Reiner Herrmann <reiner@reiner-h.de>"] 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::<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); + } +} |
