Day 11 done.

This commit is contained in:
Drew Galbraith 2023-12-11 16:34:54 -08:00
parent cabf446550
commit 4df00cc74d
3 changed files with 191 additions and 0 deletions

140
input/day11.txt Normal file
View File

@ -0,0 +1,140 @@
...........................#.............#..........#.........#..................#.......#.............................................#....
..............#...........................................................................................#...............#.................
.....................#......................................................................................................................
...................................#................................#................................................#....................#.
.................#.......................................................#..........#..................#.............................#......
...............................................................................................#.................#..........................
......................................................#........................#........................................#...................
........#.....................................................#...........................#.................#...............................
.........................................#.....#...............................................................................#............
...........................#.........................................................#...................................................#..
.....#................................................................#............................................................#........
.............#..........................................#.......................................#.................#.........#...............
............................................#...............................................................................................
.#...............#.....................#....................................#.............................#................................#
............................#....................#..........................................................................................
...................................................................................................#..........#.............................
.......#............#.........................................#........#.........................................................#..........
..............#.................................................................#..........#............................#...................
................................#........................................................................................................#..
...............................................#.....................................................#...........#..........................
#...............................................................#...........................................................................
............#......#...................................#....................................................#.............#.........#.......
.......................................................................................#....................................................
....................................#........................#......#...........................#...........................................
.........#.....#.............#............#.....................................#.....................................#.....................
..........................................................................................................#.....#...............#..........#
........................................................#...................................................................................
..........................#.................................................................................................................
....#..................................................................#..................................................#.................
.....................#..........................................#...........................#.........#.....................................
...........#.........................#.......................................#......#.................................................#.....
#...............................................................................................#..................#............#...........
............................#.............#.........#.......................................................................................
........#...........................................................#.......................................................................
.........................................................................#..........................#.......................................
..#..........#............................................#.....#.....................#...............................#.....................
.....................................#...............................................................................................#......
....................#......................#....................................................................................#...........
.....#......................................................................................................................................
................................#....................#............................#.........................................................
........................#......................................................................#.............................#..............
.......................................................................#....................................................................
..............#.................................#......................................................#.......#..................#.......#.
............................................................#............................#..................................................
..........................................................................................................................#.................
..#.................#.........#............................................#.......#........................................................
.......#.............................................#........................................#.......................#.....................
...............................................................#.................................................................#..........
...........................#...............#.......................................................#.....................................#..
.................................#..............#...............................................................#...........................
...............#........................................................................#...................................................
.........................................................#......................................#..........#................................
..#......................................#................................#.................................................................
...............................#............................................................#..............................................#
..........#........#............................................#...............................................................#...........
................................................................................#..................#...........#..........#.................
..................................#........#................................................................................................
............................................................................................................................................
.....................#............................................#............................#.......#.....................#..............
............................#........................#.....................#..........#..........................#.....................#....
.........................................................................................................................#..................
.#.........#...........................#.......................#...................................#........................................
................#........#.....................................................................................................#..........#.
...........................................................................................#.................#..............................
...............................#......................................#............................................#........................
.........................................#.......#......................................................#...................................
..........#..................................................#.................#............................................................
#.......................#..............................................................#...........................................#.......#
.................................#......................#........................................................#........#.................
............................................................................................................................................
...............................................#...............................................#............................................
................#.....................#.......................................#.............................................................
......................................................#...............#.....................................................................
...................................................................................#.............................................#..........
..................................................................#........#....................................#...........................
.#.......................................................#.................................#............#...................................
............................................................................................................................................
........#.......................#................................................#.........................................#................
..................#......#......................................................................#...........................................
......................................#...............#..........#.....................................................................#....
...#....................................................................................#...................................................
...............#..............................#.............................#...............................................................
...................................#..............................................................#.....#........................#.........#
.......#............#...................................................................................................#...................
...........................#.................................................................#................#.............................
.....................................................#...............................................#......................................
...........#..............................................#.................................................................................
..............................................#.................#...............#.........#.................................................
................#.......#...........#.................................#...................................#.................................
.....................................................................................#...........#...................#......................
........................................................#......................................................................#.......#....
.....#......................#...............................................................................................................
.............#........#..........................#..........................................................#.............#................#
............................................................................................................................................
........#............................#............................................#..........#..............................................
............................................#...................................................................#...........................
............................................................................................................................................
..#..............#......#.........................................#...............................#.........................................
....................................................#......................#.......................................................#......#.
...................................#........................#................................................................#..............
.....................................................................#...........#..........................................................
...............#.............................#...........................................................#..................................
..........#..............................................................................#.....#.................#..........................
.....................................................................................................................................#......
.#................................#.........................................................................#...............................
........................#.........................................#......#.........#................#.......................................
.................#........................................#..................................................................#..............
........................................#...................................................................................................
....#.....#........................................#............................................#...........................................
............................................................................................................................................
..............................................................................#.....................................#................#......
.....................#................................................................#.........................................#...........
.............................#.........#........#.........#.............#...........................#.......................................
................................................................#.........................#..................#............#.............#...
........#.......................................................................#...........................................................
........................#..................#............................................................#...................................
.....................................#.................................................#.........#................#.........................
...................................................#.....................#....................................................#............#
............................................................................................................................................
................#..............................................#.................#............................#.............................
....#........................#..........................#............#......................................................................
....................................#........................................................#..............................................
.......................#..........................................................................#.....#...........#............#..........
........#..................................#................#.............#...........................................................#.....
................................................#.......................................................................#..................#
..................#.................................................................#.......................................................
............#........................#...........................................................................#.............#............
...#........................................................................................................................................
..........................................#.................................#................#..............................................
.......................#............................#.............#...................................................#.............#.......
.................................#....................................................#........................#............................
.................................................................................#........................................................#.
..........................................................#.............................................#...................................
...#............#...........................................................................................................................
..............................................#...................................................#.........................................
.........................................................................#.....#.......#.........................................#..........
............#.........#......................................................................#........#.....................................
...........................#........................................#........................................#.......................#......
.....#.................................#..............#........#.....................................................#......................
...............................#............................................#........#....................................#.................

48
src/day11.rs Normal file
View File

@ -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)
}

View File

@ -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]),
}
}