use std::env::args; use std::fs::File; use std::io::BufRead; use std::io::BufReader; fn split_once<'a>(s: &'a str, sep: &str) -> (&'a str, &'a str) { let i = s.find(sep).unwrap(); let left = &s[..i]; let right = &s[i+sep.len()..]; return (left, right); } fn main() { let path = args().nth(1).unwrap(); let file = File::open(path).unwrap(); let mut count = 0; for line in BufReader::new(file).lines() { let l = line.unwrap(); let (_, right) = split_once(&l, " | "); count += right .split(" ") .filter(|s| match s.len() {2|3|4|7 => true, _ => false}) .count() } print!("{}\n", count); }