- chars
- usize
- enumerate
Solution: count digits in file
examples/files/count-digits/src/main.rs
fn main() { let text = get_text(); let counter = count_digits(&text); display(&counter); } fn count_digits(text: &str) -> [i8; 10] { let mut counter: [i8; 10] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for ch in text.chars() { if ch == ' ' { continue; } if ! "0123456789".contains(ch) { continue; } let ix = ch as usize - '0' as usize; //println!("{ch}"); //println!("{ix}"); counter[ix] += 1; } counter } fn display(counter: &[i8]) { for (ix, count) in counter.iter().enumerate() { println!("{ix}: {}", count); } } fn get_text() -> String { let args = std::env::args().collect::<Vec<_>>(); if args.len() != 2 { eprintln!("Usage: {} FILENAME", args[0]); std::process::exit(1) } std::fs::read_to_string(&args[1]).unwrap() }
0: 0 1: 2 2: 1 3: 1 4: 1 5: 1 6: 1 7: 1 8: 2 9: 0