fn main() { let part2 = true; let english_digit_names = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; let stdin = std::io::stdin(); let mut sum = 0; for line in stdin.lines() { let line = line.unwrap(); let mut first: Option = None; let mut last = 0; for i in 0..line.chars().count() { let slice = &line[i..]; let first_char = slice.chars().next().unwrap(); if first_char.is_digit(10) { if first == None { first = first_char.to_digit(10); } last = first_char.to_digit(10).unwrap(); } if part2 { for (i, name) in english_digit_names.iter().enumerate() { if slice.starts_with(name) { if first == None { first = Some(i.try_into().unwrap()); } last = i.try_into().unwrap(); } } } } sum += first.unwrap() * 10; sum += last; } println!("{}", sum); }