diff --git a/2019/11/src/main.rs b/2019/11/src/main.rs index f58a1fe..db321dd 100644 --- a/2019/11/src/main.rs +++ b/2019/11/src/main.rs @@ -28,16 +28,16 @@ fn turn(dir: Direction, turn_value: i64) -> Direction { fn mv(pos: (i64, i64), dir: &Direction) -> (i64, i64) { match dir { - Direction::Up => (pos.0, pos.1 + 1), - Direction::Right => (pos.0 + 1, pos.1), - Direction::Left => (pos.0 - 1, pos.1), - Direction::Down => (pos.0, pos.1 - 1), + Direction::Up => (pos.0, pos.1 + 1), + Direction::Right => (pos.0 + 1, pos.1), + Direction::Left => (pos.0 - 1, pos.1), + Direction::Down => (pos.0, pos.1 - 1), } } fn main() { - let mut positions= HashMap::new(); - let mut pc = IntComputer::new(read_input(), 0, vec![0]); + let mut positions = HashMap::new(); + let mut pc = IntComputer::new(read_input(), 0, vec![1]); let mut pos = (0, 0); let mut direction = Direction::Up; while let IntComputerResult::Output(o) = pc.run() { @@ -47,5 +47,44 @@ fn main() { pos = mv(pos, &direction); pc.params.push(*positions.get(&pos).unwrap_or(&0)); } + // println!("Part 1: {}", positions.len()); + let x_max = positions + .clone() + .keys() + .into_iter() + .max_by_key(|k| k.0) + .unwrap() + .0; + let y_max = positions + .clone() + .keys() + .into_iter() + .max_by_key(|k| k.1) + .unwrap() + .1; + let x_min = positions + .clone() + .keys() + .into_iter() + .min_by_key(|k| k.0) + .unwrap() + .0; + let y_min = positions + .clone() + .keys() + .into_iter() + .min_by_key(|k| k.1) + .unwrap() + .1; + for y in (y_min..y_max+1).rev() { + println!( + "{}", + (x_min..x_max) + .map(|x| positions.get(&(x, y)).unwrap_or(&0).to_string()) + .collect::() + .replace('0', " ") + .replace('1', "█") + ); + } }