2023-11: Implement first part
This commit is contained in:
parent
e0d5d12847
commit
5616c7212c
|
@ -0,0 +1,140 @@
|
|||
..........................#.........................#........................................................#..............................
|
||||
.............#.....................................................#.........#......................#.......................................
|
||||
..................................#....................................................................................#...........#........
|
||||
....................#..........................#..................................................................#.........................
|
||||
.......................................................#...............................................................................#....
|
||||
.....................................#.........................#......#..............#......................................................
|
||||
........#...............#......................................................#..........#................................#...............#
|
||||
.........................................#................#..............................................#............#.....................
|
||||
....#............................#..........................................................................................................
|
||||
............#......................................#..............................................#............#............................
|
||||
......................#.....................................................................#...............................................
|
||||
.............................................................................#........#.........................................#...........
|
||||
.................#.....................................................#.................................................#..............#...
|
||||
................................#....................#.................................................#....................................
|
||||
.......................................#.............................................................................#......................
|
||||
..#.....................#...................................................................................................................
|
||||
............................................#.....................#...........#.....................#.......................................
|
||||
..................................................................................................................#..................#......
|
||||
....................................#....................#................................................................................#.
|
||||
.........#.....................................#..............#......................#......................................#...............
|
||||
..............#..........................................................#......................#.....#.....................................
|
||||
.......................................................................................................................................#....
|
||||
..................................................................#.........................#...................#...........................
|
||||
....#............................#.....#.....................................#................................................#.............
|
||||
.......................#..........................#.........................................................................................
|
||||
..................................................................................#.....#...................#.............#.................
|
||||
................#.............................................#.................................#...........................................
|
||||
#.....................................................................................................#...................................#.
|
||||
...........#..............#.....#.............#.....................................................................#.......................
|
||||
...........................................................................#................#.....................................#.........
|
||||
...................................................#........................................................................................
|
||||
..............#....................................................................................#........................................
|
||||
.....................................#................................................#.......................#.............................
|
||||
.....................................................................................................................................#.....#
|
||||
........#................#....................................#.................................#.........#.................................
|
||||
....................................................#..............#............#....................................#......................
|
||||
....#...............#........#..........................................................#.......................................#...........
|
||||
..........................................#.....#.......................#..........................#.....................................#..
|
||||
.......................................................#....................................................................................
|
||||
#......#...................................................................................................................#................
|
||||
............#...............................................................................#..........#..........................#.........
|
||||
............................................................................................................#...............................
|
||||
.....................................#....................#........#............................#...........................................
|
||||
........................#...........................................................#................................#....................#.
|
||||
......#...............................................#.....................#........................#......................................
|
||||
.................................#.....................................#..................................................#.................
|
||||
...................#......................#..................#..........................#.............................................#.....
|
||||
.............................#.....................#..............#...........................................#.............................
|
||||
.........................................................#.......................................................................#..........
|
||||
...............................................................................#.......................#.................................#..
|
||||
............................................................................................................................................
|
||||
............................................................................................................................................
|
||||
.................#.............................................................................................#.......#.............#......
|
||||
....#.....#....................................................#........#...............#....................................#..............
|
||||
..................................#..........#........................................................#.....................................
|
||||
............................................................................................................................................
|
||||
...................#..............................................................................#......................#..................
|
||||
............................................................................................................................................
|
||||
..#..............................................#......#.....#...........................#..............#....................#.............
|
||||
................#......#.........#..........................................................................................................
|
||||
.........................................................................#......................................#.........................#.
|
||||
....................................................#..............#............................#...........................................
|
||||
.....#....................#..........................................................................#......................................
|
||||
............#...........................#......#............................................................................................
|
||||
............................................................................................................................................
|
||||
.....................#.........................................................#.........................#........#.............#...........
|
||||
.........#..............................................................#.....................#..........................................#..
|
||||
......................................#...........#.....................................#...................................................
|
||||
.#...............................#..........................................................................................................
|
||||
..............#............#....................................#..................................#........................#...............
|
||||
.....................................................................#...........................................#..........................
|
||||
............................................................................................................................................
|
||||
.........#........#........................#.....#........................#.......................................................#.....#...
|
||||
............................................................................................................................................
|
||||
...................................#........................................................................................................
|
||||
..............#..........#..............#....................................#..........#.....#.............................................
|
||||
....#........................................#............#...................................................................#.............
|
||||
............................................................................................................................................
|
||||
#........#......................................................#........#.................................................................#
|
||||
....................#.........#..........................................................................#.......#......#...................
|
||||
............................................................................................................................................
|
||||
.......................................#..............#...........................................#.........................................
|
||||
................................................#.............................................................#.......................#.....
|
||||
.......................#...................#..............................#.................................................................
|
||||
...............#...................#....................................................#.............................#.....................
|
||||
....#......................................................................................................#................................
|
||||
.............................#.........................................#....................#.............................#.....#...........
|
||||
..............................................#..................................................#...................................#......
|
||||
...................#...................#..........................................#.................................#.......................
|
||||
............#.....................#....................#..................#.................................................................
|
||||
...........................................#........................................................#.......................................
|
||||
...........................................................................................................#................................
|
||||
...#............................................................#.............................................................#.............
|
||||
.........................#..............................................................#................................................#..
|
||||
...............#............................................................................................................................
|
||||
.......................................#.......#.............#..............................................................................
|
||||
.....................#...........#.............................................#............#.................#.........#...........#.......
|
||||
..........................................................................#.......................#.........................................
|
||||
.......#............................................................................#.......................................................
|
||||
....................................................#....................................................................................#..
|
||||
.................#........................................#.....#...........................................................#...............
|
||||
.#.........#..................................#.................................#..............#.........#.....#......#.....................
|
||||
.....................#............#.......................................................#.........#.......................................
|
||||
............................................................................#.......................................................#.......
|
||||
.....................................................................................#....................................#.................
|
||||
............................#................................................................#..................................#...........
|
||||
.....#.........................................................#............................................................................
|
||||
......................#..................#............................................................................#.....................
|
||||
................................................................................#.....................................................#.....
|
||||
#.................................#.......................................#.................................................................
|
||||
...................#......#.......................#...............#...........................................#.............................
|
||||
.............................................................#........................................#......................#..............
|
||||
.................................................................................................#..........................................
|
||||
..#..................................#....................................................................#......#..................#.......
|
||||
..........................................................#..................#........................................#.....................
|
||||
..................#........#........................................................#..........................................#............
|
||||
.................................#.............#.......................#...................................................................#
|
||||
................................................................................................#.........................#.................
|
||||
....#.....#.................................................................................................................................
|
||||
.......................#....................................................#...............................................................
|
||||
....................................................#.......................................................................................
|
||||
.............#..............................#..........................................#....................................................
|
||||
...............................#............................................................................................#........#......
|
||||
.#.......................................................#.........#...........#.................................#..........................
|
||||
....................................#.............#..............................................................................#..........
|
||||
.....................#.........................................................................#......#.....................................
|
||||
..........................#...........................#.........#.................#.........................................................
|
||||
..........#.................................#................................#..............................................................
|
||||
....#...........................................................................................................#..................#........
|
||||
........................................................................#..............#.....................................#..............
|
||||
..................#.......................................#.................................................................................
|
||||
........................................................................................................................................#...
|
||||
....................................................#.......................#..........................#....................................
|
||||
.....#..............................#.........................#..................................#..........................................
|
||||
..........................#............................................#........................................#.......#...................
|
||||
..........................................#.................................................................................................
|
||||
......................................................................................................................................#.....
|
||||
.......#...........................................#................................#........................................#..............
|
||||
#..................#..........................#..........................#.....#............................#...............................
|
||||
...................................#.....................................................................................#..................
|
|
@ -0,0 +1,15 @@
|
|||
pub struct Galaxy {
|
||||
pub i: usize,
|
||||
pub j: usize,
|
||||
}
|
||||
|
||||
pub fn all_false(vector: &Vec<bool>) -> bool {
|
||||
vector.iter().all(|x| *x == false)
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn print_matrix(matrix: &Vec<Vec<bool>>) {
|
||||
for row in matrix {
|
||||
row.iter().for_each(|x| print!("{}", if *x { '#' } else { '.' }));
|
||||
println!();}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
pub mod part_one;
|
||||
//pub mod part_two;
|
||||
//pub mod common;
|
||||
pub mod common;
|
||||
|
||||
use crate::utils::solution::Solution;
|
||||
use crate::utils::input_reader;
|
||||
|
@ -11,7 +11,7 @@ pub struct DaySolution ;
|
|||
impl Solution for DaySolution {
|
||||
|
||||
fn input_path(&self) -> &'static str {
|
||||
"input/2023/day_11/input_test.txt"
|
||||
"input/2023/day_11/input.txt"
|
||||
}
|
||||
|
||||
fn part_one(&self) -> String {
|
||||
|
|
|
@ -1,23 +1,35 @@
|
|||
use super::common::{all_false, Galaxy};
|
||||
|
||||
pub fn part_one(input_lines: Vec<String>) -> String {
|
||||
let vert_dim = input_lines.len();
|
||||
let horz_dim = input_lines[0].len();
|
||||
|
||||
let mut matrix = vec![vec![false; horz_dim]; vert_dim];
|
||||
let mut galaxies: Vec<Galaxy> = Vec::new();
|
||||
|
||||
for (y, line) in input_lines.iter().enumerate() {
|
||||
for (x, c) in line.chars().enumerate() {
|
||||
matrix[x][y] = c == '#';
|
||||
matrix[y][x] = c == '#';
|
||||
}
|
||||
}
|
||||
|
||||
println!("Pre-expand dims: {:?}, {:?}", matrix.len(), matrix[0].len());
|
||||
|
||||
expand_rows(&mut matrix);
|
||||
expand_cols(&mut matrix);
|
||||
|
||||
println!("Post-expand dims: {:?}, {:?}", matrix.len(), matrix[0].len());
|
||||
for x in 0..matrix.len() {
|
||||
for y in 0..matrix[x].len() {
|
||||
if matrix[x][y] {
|
||||
galaxies.push(Galaxy { i: x, j: y });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String::from("Not implemented")
|
||||
let mut total_distance = 0;
|
||||
for i in 0..(galaxies.len() - 1) {
|
||||
total_distance += distances_from_galaxy(i, &galaxies);
|
||||
}
|
||||
|
||||
total_distance.to_string()
|
||||
}
|
||||
|
||||
fn expand_rows(matrix: &mut Vec<Vec<bool>>) {
|
||||
|
@ -46,6 +58,28 @@ fn expand_cols(matrix: &mut Vec<Vec<bool>>) {
|
|||
}
|
||||
}
|
||||
|
||||
fn all_false(vector: &Vec<bool>) -> bool {
|
||||
vector.iter().all(|x| *x == false)
|
||||
fn distances_from_galaxy(id : usize, galaxies: &Vec<Galaxy>) -> usize {
|
||||
let mut distance: usize = 0;
|
||||
for i in (id + 1)..galaxies.len() {
|
||||
distance += euclidian_distance(galaxies[id].i, galaxies[id].j, galaxies[i].i, galaxies[i].j);
|
||||
}
|
||||
distance
|
||||
}
|
||||
|
||||
fn euclidian_distance(x1: usize, y1: usize, x2: usize, y2: usize) -> usize {
|
||||
let x;
|
||||
if x1 > x2 {
|
||||
x = x1 - x2;
|
||||
} else {
|
||||
x = x2 - x1;
|
||||
}
|
||||
|
||||
let y;
|
||||
if y1 > y2 {
|
||||
y = y1 - y2;
|
||||
} else {
|
||||
y = y2 - y1;
|
||||
}
|
||||
|
||||
x + y
|
||||
}
|
Loading…
Reference in New Issue