diff options
Diffstat (limited to '2015/rs/src/three.rs')
-rw-r--r-- | 2015/rs/src/three.rs | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/2015/rs/src/three.rs b/2015/rs/src/three.rs deleted file mode 100644 index 04db03a..0000000 --- a/2015/rs/src/three.rs +++ /dev/null @@ -1,29 +0,0 @@ -use std::collections::HashSet; - -static INPUT: &'static str = include_str!("three.txt"); - -fn main() { - let valueified = INPUT.chars().map(|c| match c { '<' => (-1, 0), '>' => (1, 0), '^' => (0, 1), 'v' => (0, -1), _ => (0, 0) }); - - let mut visited = HashSet::new(); - append_visits(valueified.clone(), &mut visited); - println!("Number visited normally: {}", visited.len()); - - let santa_iter = valueified.clone().step_by(2); - let robot_iter = valueified.skip(1).step_by(2); - - let mut visited = HashSet::new(); - append_visits(santa_iter.clone(), &mut visited); - append_visits(robot_iter.clone(), &mut visited); - println!("Number visited w/ robot: {}", visited.len()); -} - -fn append_visits<I: Iterator<Item = (i32, i32)>>(iter: I, visited: &mut HashSet<(i32, i32)>) { - let (mut x, mut y) = (0, 0); - visited.insert((0, 0)); - for (move_x, move_y) in iter { - x += move_x; - y += move_y; - visited.insert((x, y)); - } -} |