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) }