summaryrefslogtreecommitdiff
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
parent06835ff1a9d00834d6070a6c9d361e8e731519b4 (diff)
day3 solution 1
-rw-r--r--Cargo.lock47
-rw-r--r--Cargo.toml1
-rw-r--r--src/bin/day3.rs36
3 files changed, 84 insertions, 0 deletions
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 <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);
+ }
+}