fn less_20(n: u32) -> String { if n == 1 { return String::from("one"); } if n == 2 { return String::from("two"); } if n == 3 { return String::from("three"); } if n == 4 { return String::from("four"); } if n == 5 { return String::from("five"); } if n == 6 { return String::from("six"); } if n == 7 { return String::from("seven"); } if n == 8 { return String::from("eight"); } if n == 9 { return String::from("nine"); } if n == 10 { return "ten".to_string(); } if n == 11 { return "eleven".to_string(); } if n == 12 { return "twelve".to_string(); } if n == 13 { return "thirteen".to_string(); } if n == 14 { return "fourteen".to_string(); } if n == 15 { return "fifteen".to_string(); } if n == 16 { return "sixteen".to_string(); } if n == 17 { return "seventeen".to_string(); } if n == 18 { return "eighteen".to_string(); } if n == 19 { return "nineteen".to_string(); } return String::from("idontknow"); } fn tens_from_20(n: u32) -> String { if n == 20 { return "twenty".to_string(); } if n == 30 { return "thirty".to_string(); } if n == 40 { return "forty".to_string(); } if n == 50 { return "fifty".to_string(); } if n == 60 { return "sixty".to_string(); } if n == 70 { return "seventy".to_string(); } if n == 80 { return "eighty".to_string(); } if n == 90 { return "ninety".to_string(); } return "what".to_string(); } fn to_99(n: u32) -> String { if n < 20 { return less_20(n); } if n % 10 == 0 { return tens_from_20(n); } let l = (n / 10) * 10; let r = n % 10; let mut res = tens_from_20(l); res.push_str(&less_20(r)); return res; } fn to_999(n: u32) -> String { if n < 100 { return to_99(n); } let ll = n / 100; let rr = n % 100; let mut res = less_20(ll); res.push_str("hundred"); if rr != 0 { res.push_str("and"); res.push_str(&to_99(rr)); } return res; } fn main() { let mut res = 0; for i in 1..=999 { let lll = to_999(i); //println!("{}", lll); res += lll.len(); } res += "onethousand".to_string().len(); println!("{}", res); }