use std::io::stdin; /// エントリポイント fn main() { let input = read_lines(); println!("{}", treasure_hunt(input)); } /// 標準入力から文字列を取得します。 fn read_lines() -> String { let mut str1 = String::new(); stdin().read_line(&mut str1).unwrap(); str1 } fn treasure_hunt(direction: String) -> f64 { // 0:NS, 1:EW let mut dir_count = [0f64; 2]; for d in direction.trim().chars() { match d { 'N' => dir_count[0] += 1f64, 'S' => dir_count[0] -= 1f64, 'E' => dir_count[1] += 1f64, 'W' => dir_count[1] -= 1f64, _ => panic!(), } } // 南東(NE) let ne = dir_count[0].powf(2.0); // 北西(SW) let sw = dir_count[1].powf(2.0); (ne + sw).sqrt() }