day 03 part 1
This commit is contained in:
parent
529e2fad5c
commit
d8816f70d7
10 changed files with 260 additions and 25 deletions
|
|
@ -1,4 +1,4 @@
|
|||
use shared::{Answer, Solution};
|
||||
use shared::{Answer, load_test, Solution};
|
||||
use regex::{Regex};
|
||||
|
||||
pub struct Day01;
|
||||
|
|
@ -55,4 +55,11 @@ fn matches(cap: ®ex::Captures) -> u64 {
|
|||
};
|
||||
}
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn example() {
|
||||
assert_eq!(Day01.part_1(load_test(2023, 1)?.as_str()), 142);
|
||||
assert_eq!(Day01.part_2(load_test(2023, 1)?.as_str()), 281);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
use shared::{Answer, Solution};
|
||||
use regex::Regex;
|
||||
use substring::Substring;
|
||||
|
||||
pub struct Day03;
|
||||
|
||||
|
|
@ -7,25 +8,57 @@ impl Solution for Day03 {
|
|||
fn part_1(&self, input: &str) -> Answer {
|
||||
let lines: Vec<&str> = input.split("\n").collect();
|
||||
|
||||
let pattern = Regex::new(
|
||||
// r"[^\d.^]?(\d+)[\d.]|[^\d.](\d+)[\d.$]?"
|
||||
r"(\d+)"
|
||||
).unwrap();
|
||||
let mut out: u64 = 0;
|
||||
|
||||
let mut sum: u64 = 0;
|
||||
let re = Regex::new(r"\d+").unwrap();
|
||||
let special = Regex::new(r"[^\d.]").unwrap();
|
||||
|
||||
for i in 0..lines.len() {
|
||||
for m in pattern.find_iter(lines[i]) {
|
||||
match lines.get(i-1) {
|
||||
_ => (),
|
||||
for (i, line) in lines.iter().enumerate() {
|
||||
for capture in re.find_iter(line) {
|
||||
let prev = if i > 0 { lines.get(i - 1) } else { None };
|
||||
let curr = lines.get(i);
|
||||
let next = lines.get(i+1);
|
||||
|
||||
if match prev {
|
||||
Some(l) => {
|
||||
let part = l.substring(1.max(capture.start()) - 1, capture.end() + 1);
|
||||
special.is_match(part)
|
||||
},
|
||||
None => false,
|
||||
} | match curr {
|
||||
Some(l) => {
|
||||
let part = l.substring(1.max(capture.start()) - 1, capture.end() + 1);
|
||||
special.is_match(part)
|
||||
},
|
||||
None => false,
|
||||
} | match next {
|
||||
Some(l) => {
|
||||
let part = l.substring(1.max(capture.start()) - 1, capture.end() + 1);
|
||||
special.is_match(part)
|
||||
},
|
||||
None => false,
|
||||
} {
|
||||
out += capture.as_str().parse::<u64>().unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Answer::Unimplemented
|
||||
Answer::from(out)
|
||||
}
|
||||
|
||||
fn part_2(&self, input: &str) -> Answer {
|
||||
todo!()
|
||||
let lines: Vec<&str> = input.split("\n").collect();
|
||||
|
||||
let mut out: u64 = 0;
|
||||
|
||||
for (i, line) in lines.iter().enumerate() {
|
||||
|
||||
}
|
||||
|
||||
Answer::Unimplemented
|
||||
}
|
||||
}
|
||||
|
||||
fn extract_num(line: &str, pos: usize) -> u64 {
|
||||
todo!()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,30 @@
|
|||
use shared::Solution;
|
||||
use crate::day01::Day01;
|
||||
use crate::day02::Day02;
|
||||
use crate::day03::Day03;
|
||||
use crate::day04::Day04;
|
||||
use crate::day05::Day05;
|
||||
use crate::day06::Day06;
|
||||
use crate::day07::Day07;
|
||||
use crate::day08::Day08;
|
||||
use crate::day09::Day09;
|
||||
use crate::day10::Day10;
|
||||
use crate::day11::Day11;
|
||||
use crate::day12::Day12;
|
||||
use crate::day13::Day13;
|
||||
use crate::day14::Day14;
|
||||
use crate::day15::Day15;
|
||||
use crate::day16::Day16;
|
||||
use crate::day17::Day17;
|
||||
use crate::day18::Day18;
|
||||
use crate::day19::Day19;
|
||||
use crate::day20::Day20;
|
||||
use crate::day21::Day21;
|
||||
use crate::day22::Day22;
|
||||
use crate::day23::Day23;
|
||||
use crate::day24::Day24;
|
||||
use crate::day25::Day25;
|
||||
|
||||
pub mod day01;
|
||||
pub mod day02;
|
||||
pub mod day03;
|
||||
|
|
@ -25,4 +52,9 @@ pub mod day21;
|
|||
pub mod day22;
|
||||
pub mod day23;
|
||||
pub mod day24;
|
||||
pub mod day25;
|
||||
pub mod day25;
|
||||
|
||||
#[test]
|
||||
fn examples() {
|
||||
todo!()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue