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 day1;
|
||||||
mod day10;
|
mod day10;
|
||||||
|
mod day11;
|
||||||
mod day2;
|
mod day2;
|
||||||
mod day3;
|
mod day3;
|
||||||
mod day4;
|
mod day4;
|
||||||
|
@ -38,6 +39,8 @@ fn main() {
|
||||||
"day9b" => println!("Sum: {}", day9::sum_next(true)),
|
"day9b" => println!("Sum: {}", day9::sum_next(true)),
|
||||||
"day10a" => println!("Steps: {}", day10::num_steps().0),
|
"day10a" => println!("Steps: {}", day10::num_steps().0),
|
||||||
"day10b" => println!("Contains: {}", day10::num_steps().1),
|
"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]),
|
_ => println!("Unrecognized day: {}", args[1]),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue