From 8089545c22b1ae4a98e967f070c3e298e6808961 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Wed, 6 Dec 2023 01:45:05 +0100 Subject: Initial commit --- src/day1pt2.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/day1pt2.rs (limited to 'src/day1pt2.rs') diff --git a/src/day1pt2.rs b/src/day1pt2.rs new file mode 100644 index 0000000..99407dd --- /dev/null +++ b/src/day1pt2.rs @@ -0,0 +1,51 @@ +use regex::Regex; + +fn parse(s: &str) -> u32 { + match s { + "zero" => 0, + "one" => 1, + "two" => 2, + "three" => 3, + "four" => 4, + "five" => 5, + "six" => 6, + "seven" => 7, + "eight" => 8, + "nine" => 9, + br => br.parse().unwrap(), + } +} + +fn parse_bw(s: &str) -> u32 { + match s { + "orez" => 0, + "eno" => 1, + "owt" => 2, + "eerht" => 3, + "ruof" => 4, + "evif" => 5, + "xis" => 6, + "neves" => 7, + "thgie" => 8, + "enin" => 9, + br => br.parse().unwrap(), + } +} + +pub fn main() { + let mut sum: u32 = 0; + let re = Regex::new(r"\d|zero|one|two|three|four|five|six|seven|eight|nine").unwrap(); + let re_bw = Regex::new(r"\d|ozer|eno|owt|eerht|ruof|evif|xis|neves|thgie|enin").unwrap(); + + let txt = std::fs::read_to_string("./input/day1.txt").unwrap(); + for line in txt.lines() { + let capt = re.find_iter(line).collect::>(); + let str_bw = String::from_iter(line.chars().rev()); + let capt_bw = re_bw.find_iter(&str_bw).collect::>(); + + let x = + parse(capt.get(0).unwrap().as_str()) * 10 + parse_bw(capt_bw.get(0).unwrap().as_str()); + sum += x; + } + println!("{}", sum) +} -- cgit v1.2.3