diff options
| author | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-06 01:45:05 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-06 01:45:05 +0100 |
| commit | 8089545c22b1ae4a98e967f070c3e298e6808961 (patch) | |
| tree | 0f8b13fbdeffc7ae03f3d7bfefbf6ef81bb3fb3a /src/day1pt2.rs | |
Initial commit
Diffstat (limited to 'src/day1pt2.rs')
| -rw-r--r-- | src/day1pt2.rs | 51 |
1 files changed, 51 insertions, 0 deletions
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::<Vec<_>>(); + let str_bw = String::from_iter(line.chars().rev()); + let capt_bw = re_bw.find_iter(&str_bw).collect::<Vec<_>>(); + + let x = + parse(capt.get(0).unwrap().as_str()) * 10 + parse_bw(capt_bw.get(0).unwrap().as_str()); + sum += x; + } + println!("{}", sum) +} |
