Day 11 done.
This commit is contained in:
parent
cabf446550
commit
4df00cc74d
|
@ -0,0 +1,140 @@
|
|||
...........................#.............#..........#.........#..................#.......#.............................................#....
|
||||
..............#...........................................................................................#...............#.................
|
||||
.....................#......................................................................................................................
|
||||
...................................#................................#................................................#....................#.
|
||||
.................#.......................................................#..........#..................#.............................#......
|
||||
...............................................................................................#.................#..........................
|
||||
......................................................#........................#........................................#...................
|
||||
........#.....................................................#...........................#.................#...............................
|
||||
.........................................#.....#...............................................................................#............
|
||||
...........................#.........................................................#...................................................#..
|
||||
.....#................................................................#............................................................#........
|
||||
.............#..........................................#.......................................#.................#.........#...............
|
||||
............................................#...............................................................................................
|
||||
.#...............#.....................#....................................#.............................#................................#
|
||||
............................#....................#..........................................................................................
|
||||
...................................................................................................#..........#.............................
|
||||
.......#............#.........................................#........#.........................................................#..........
|
||||
..............#.................................................................#..........#............................#...................
|
||||
................................#........................................................................................................#..
|
||||
...............................................#.....................................................#...........#..........................
|
||||
#...............................................................#...........................................................................
|
||||
............#......#...................................#....................................................#.............#.........#.......
|
||||
.......................................................................................#....................................................
|
||||
....................................#........................#......#...........................#...........................................
|
||||
.........#.....#.............#............#.....................................#.....................................#.....................
|
||||
..........................................................................................................#.....#...............#..........#
|
||||
........................................................#...................................................................................
|
||||
..........................#.................................................................................................................
|
||||
....#..................................................................#..................................................#.................
|
||||
.....................#..........................................#...........................#.........#.....................................
|
||||
...........#.........................#.......................................#......#.................................................#.....
|
||||
#...............................................................................................#..................#............#...........
|
||||
............................#.............#.........#.......................................................................................
|
||||
........#...........................................................#.......................................................................
|
||||
.........................................................................#..........................#.......................................
|
||||
..#..........#............................................#.....#.....................#...............................#.....................
|
||||
.....................................#...............................................................................................#......
|
||||
....................#......................#....................................................................................#...........
|
||||
.....#......................................................................................................................................
|
||||
................................#....................#............................#.........................................................
|
||||
........................#......................................................................#.............................#..............
|
||||
.......................................................................#....................................................................
|
||||
..............#.................................#......................................................#.......#..................#.......#.
|
||||
............................................................#............................#..................................................
|
||||
..........................................................................................................................#.................
|
||||
..#.................#.........#............................................#.......#........................................................
|
||||
.......#.............................................#........................................#.......................#.....................
|
||||
...............................................................#.................................................................#..........
|
||||
...........................#...............#.......................................................#.....................................#..
|
||||
.................................#..............#...............................................................#...........................
|
||||
...............#........................................................................#...................................................
|
||||
.........................................................#......................................#..........#................................
|
||||
..#......................................#................................#.................................................................
|
||||
...............................#............................................................#..............................................#
|
||||
..........#........#............................................#...............................................................#...........
|
||||
................................................................................#..................#...........#..........#.................
|
||||
..................................#........#................................................................................................
|
||||
............................................................................................................................................
|
||||
.....................#............................................#............................#.......#.....................#..............
|
||||
............................#........................#.....................#..........#..........................#.....................#....
|
||||
.........................................................................................................................#..................
|
||||
.#.........#...........................#.......................#...................................#........................................
|
||||
................#........#.....................................................................................................#..........#.
|
||||
...........................................................................................#.................#..............................
|
||||
...............................#......................................#............................................#........................
|
||||
.........................................#.......#......................................................#...................................
|
||||
..........#..................................................#.................#............................................................
|
||||
#.......................#..............................................................#...........................................#.......#
|
||||
.................................#......................#........................................................#........#.................
|
||||
............................................................................................................................................
|
||||
...............................................#...............................................#............................................
|
||||
................#.....................#.......................................#.............................................................
|
||||
......................................................#...............#.....................................................................
|
||||
...................................................................................#.............................................#..........
|
||||
..................................................................#........#....................................#...........................
|
||||
.#.......................................................#.................................#............#...................................
|
||||
............................................................................................................................................
|
||||
........#.......................#................................................#.........................................#................
|
||||
..................#......#......................................................................#...........................................
|
||||
......................................#...............#..........#.....................................................................#....
|
||||
...#....................................................................................#...................................................
|
||||
...............#..............................#.............................#...............................................................
|
||||
...................................#..............................................................#.....#........................#.........#
|
||||
.......#............#...................................................................................................#...................
|
||||
...........................#.................................................................#................#.............................
|
||||
.....................................................#...............................................#......................................
|
||||
...........#..............................................#.................................................................................
|
||||
..............................................#.................#...............#.........#.................................................
|
||||
................#.......#...........#.................................#...................................#.................................
|
||||
.....................................................................................#...........#...................#......................
|
||||
........................................................#......................................................................#.......#....
|
||||
.....#......................#...............................................................................................................
|
||||
.............#........#..........................#..........................................................#.............#................#
|
||||
............................................................................................................................................
|
||||
........#............................#............................................#..........#..............................................
|
||||
............................................#...................................................................#...........................
|
||||
............................................................................................................................................
|
||||
..#..............#......#.........................................#...............................#.........................................
|
||||
....................................................#......................#.......................................................#......#.
|
||||
...................................#........................#................................................................#..............
|
||||
.....................................................................#...........#..........................................................
|
||||
...............#.............................#...........................................................#..................................
|
||||
..........#..............................................................................#.....#.................#..........................
|
||||
.....................................................................................................................................#......
|
||||
.#................................#.........................................................................#...............................
|
||||
........................#.........................................#......#.........#................#.......................................
|
||||
.................#........................................#..................................................................#..............
|
||||
........................................#...................................................................................................
|
||||
....#.....#........................................#............................................#...........................................
|
||||
............................................................................................................................................
|
||||
..............................................................................#.....................................#................#......
|
||||
.....................#................................................................#.........................................#...........
|
||||
.............................#.........#........#.........#.............#...........................#.......................................
|
||||
................................................................#.........................#..................#............#.............#...
|
||||
........#.......................................................................#...........................................................
|
||||
........................#..................#............................................................#...................................
|
||||
.....................................#.................................................#.........#................#.........................
|
||||
...................................................#.....................#....................................................#............#
|
||||
............................................................................................................................................
|
||||
................#..............................................#.................#............................#.............................
|
||||
....#........................#..........................#............#......................................................................
|
||||
....................................#........................................................#..............................................
|
||||
.......................#..........................................................................#.....#...........#............#..........
|
||||
........#..................................#................#.............#...........................................................#.....
|
||||
................................................#.......................................................................#..................#
|
||||
..................#.................................................................#.......................................................
|
||||
............#........................#...........................................................................#.............#............
|
||||
...#........................................................................................................................................
|
||||
..........................................#.................................#................#..............................................
|
||||
.......................#............................#.............#...................................................#.............#.......
|
||||
.................................#....................................................#........................#............................
|
||||
.................................................................................#........................................................#.
|
||||
..........................................................#.............................................#...................................
|
||||
...#............#...........................................................................................................................
|
||||
..............................................#...................................................#.........................................
|
||||
.........................................................................#.....#.......#.........................................#..........
|
||||
............#.........#......................................................................#........#.....................................
|
||||
...........................#........................................#........................................#.......................#......
|
||||
.....#.................................#..............#........#.....................................................#......................
|
||||
...............................#............................................#........#....................................#.................
|
|
@ -0,0 +1,48 @@
|
|||
use std::io;
|
||||
|
||||
pub fn sum_pairs(universe: &Vec<Vec<char>>, ratio: u64) -> u64 {
|
||||
let mut empty_columns: Vec<bool> = vec![true; universe[0].len()];
|
||||
let mut empty_rows: Vec<bool> = vec![true; universe.len()];
|
||||
|
||||
let mut galaxies: Vec<(usize, usize)> = Vec::new();
|
||||
for r in 0..universe.len() {
|
||||
for c in 0..universe[r].len() {
|
||||
if universe[r][c] == '#' {
|
||||
empty_rows[r] = false;
|
||||
empty_columns[c] = false;
|
||||
galaxies.push((r, c));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let mut sum: u64 = 0;
|
||||
for i in 0..galaxies.len() {
|
||||
let (r1, c1) = galaxies[i];
|
||||
for j in (i + 1)..galaxies.len() {
|
||||
let (r2, c2) = galaxies[j];
|
||||
let rmin = r1.min(r2);
|
||||
let rmax = r1.max(r2);
|
||||
let cmin = c1.min(c2);
|
||||
let cmax = c1.max(c2);
|
||||
|
||||
let cartdistance = ((rmax - rmin) + (cmax - cmin)) as u64;
|
||||
let addcols = empty_columns[cmin..=cmax].iter().filter(|b| **b).count() as u64;
|
||||
let addrows = empty_rows[rmin..=rmax].iter().filter(|b| **b).count() as u64;
|
||||
sum += cartdistance + (addcols * ratio) + (addrows * ratio);
|
||||
}
|
||||
}
|
||||
|
||||
sum
|
||||
}
|
||||
|
||||
pub fn sum_lengths(ratio: u64) -> u64 {
|
||||
let mut buffer = String::new();
|
||||
|
||||
let mut universe: Vec<Vec<char>> = Vec::new();
|
||||
while io::stdin().read_line(&mut buffer).unwrap() > 0 {
|
||||
universe.push(buffer.trim().chars().collect());
|
||||
buffer = String::new();
|
||||
}
|
||||
|
||||
sum_pairs(&universe, ratio)
|
||||
}
|
|
@ -2,6 +2,7 @@ use std::env;
|
|||
|
||||
mod day1;
|
||||
mod day10;
|
||||
mod day11;
|
||||
mod day2;
|
||||
mod day3;
|
||||
mod day4;
|
||||
|
@ -38,6 +39,8 @@ fn main() {
|
|||
"day9b" => println!("Sum: {}", day9::sum_next(true)),
|
||||
"day10a" => println!("Steps: {}", day10::num_steps().0),
|
||||
"day10b" => println!("Contains: {}", day10::num_steps().1),
|
||||
"day11a" => println!("Sum: {}", day11::sum_lengths(1)),
|
||||
"day11b" => println!("Sum: {}", day11::sum_lengths(999999)),
|
||||
_ => println!("Unrecognized day: {}", args[1]),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue