fn main() { let mut a: Vec = input_line(); let mut a_t = get_count_tuple(&mut a); a_t.sort_by(|a, b| b.1.cmp(&a.1)); if a_t.len() == 2 && a_t[0].1 == 3 { println!("FULL HOUSE"); } else if a_t.len() == 3 { if a_t[0].1 == 3 { println!("THREE CARD"); } else { println!("TWO PAIR") } } else if a_t.len() == 4 { println!("ONE PAIR"); } else { println!("NO HAND"); } } fn get_count_tuple(v: &mut Vec) -> Vec<(i32, i32)> { let mut tv = Vec::new(); let mut count = 0; let mut cor = 2; v.sort(); for i in 0..v.len() { if cor == v[i] { count += 1; } else { if count != 0 { tv.push((cor, count)); } cor = v[i]; count = 1; } if i == v.len() - 1 { tv.push((cor, count)); } } tv } #[allow(unused)] fn input_line() -> Vec { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.trim() .split_whitespace() .map(|e| e.parse().ok().unwrap()) .collect() }