summaryrefslogtreecommitdiff
path: root/2024/3/src
diff options
context:
space:
mode:
Diffstat (limited to '2024/3/src')
-rw-r--r--2024/3/src/main.rs41
1 files changed, 0 insertions, 41 deletions
diff --git a/2024/3/src/main.rs b/2024/3/src/main.rs
deleted file mode 100644
index 0775483..0000000
--- a/2024/3/src/main.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-use regex::Regex;
-
-const INPUT_FILE: &str = "input";
-
-fn p1(input: &str) {
- let re = Regex::new(r"mul\(([0-9]{1,3}),([0-9]{1,3})\)").unwrap();
-
- let mut result: u32 = 0;
- for (_, [x, y]) in re.captures_iter(input).map(|cs| cs.extract()) {
- result += x.parse::<u32>().unwrap() * y.parse::<u32>().unwrap();
- }
-
- println!("Result: {}", result);
-}
-
-fn p2(input: &str) {
- let re = Regex::new(r"do\(\)|don't\(\)|mul\(([0-9]{1,3}),([0-9]{1,3})\)").unwrap();
-
- let mut doing = true;
- let mut result: u32 = 0;
- for cs in re.captures_iter(input) {
- let mut it = cs.iter().flatten().map(|m| m.as_str());
- match it.next().unwrap() {
- "do()" => doing = true,
- "don't()" => doing = false,
- mul if doing && mul.starts_with("mul") => {
- let mut next = || it.next().unwrap().parse::<u32>().unwrap();
- result += next() * next();
- }
- _ => (),
- }
- }
-
- println!("Result: {}", result);
-}
-
-fn main() {
- let input = std::fs::read_to_string(INPUT_FILE).unwrap();
- p1(&input);
- p2(&input);
-}