day_9: init

This commit is contained in:
2024-12-12 08:21:21 +01:00
parent 18e8f4849d
commit 62a9aec76d
6 changed files with 64 additions and 12 deletions

View File

@@ -1,11 +1,12 @@
// mod fri_06;
// mod mon_02;
// mod sun_01;
// mod thu_05;
// mod mon_02;
// mod tue_03;
// mod wed_04;
// mod thu_05;
// mod fri_06;
// mod sat_07;
mod sun_08;
// mod sun_08;
mod mon_09;
mod types;
mod utils;
@@ -17,6 +18,7 @@ pub fn today() {
pub fn historian_hysteria() {
// NOTE: previous days are commented to speed up (all the blame is on day 6)
// Sunday 01
// let key = sun_01::get_key("./assets/day_1_input").unwrap();
// println!("The key is: {key}");
@@ -62,11 +64,14 @@ pub fn historian_hysteria() {
// println!("The total calibration result is {}", calibration_result);
// Sunday 08
let (antinode_count, antinode_count_any) =
sun_08::resonant_collinearity("./assets/day_8_antena_map_input");
println!("The total antinode positions is {}", antinode_count);
println!(
"The total antinode positions in any grid is {}",
antinode_count_any
);
// let (antinode_count, antinode_count_any) =
// sun_08::resonant_collinearity("./assets/day_8_antena_map_input");
// println!("The total antinode positions is {}", antinode_count);
// println!(
// "The total antinode positions in any grid is {}",
// antinode_count_any
// );
// Monday 09
let disk_checksum = mon_09::disk_fragmenter("./assets/day_9_disk_input");
}

View File

@@ -0,0 +1,19 @@
use super::{utils::read_disk_map_input, DiskMap};
pub fn disk_fragmenter(input: &str) -> usize {
let disk_map = read_disk_map_input(input);
let organized_disk_map = organize_disk_map(&disk_map);
println!("{:?}", disk_map);
println!("{:?}", organized_disk_map);
0
}
pub fn organize_disk_map(disk_map: &DiskMap) -> DiskMap {
let organized_disk_map: DiskMap = vec![];
for block in disk_map {}
organized_disk_map
}

View File

@@ -71,3 +71,7 @@ pub type AntenaList = Vec<Antena>;
pub type AntinodeCount = usize;
pub type Antinode = (usize, usize);
pub type AntinodeList = HashSet<Antinode>;
// Disk fragmenter
pub type Block = Option<usize>;
pub type DiskMap = Vec<Block>;

View File

@@ -164,6 +164,29 @@ pub fn read_antena_map_input(input: &str) -> (RoofMap, AntenaList) {
(roof_map, antena_list)
}
pub fn read_disk_map_input(input: &str) -> DiskMap {
let mut disk_map: DiskMap = vec![];
let raw_map = read_to_string(input).unwrap();
let mut id: usize = 0;
for (digit_index, char_digit) in raw_map.chars().enumerate() {
if let Some(digit) = char_digit.to_digit(10u32) {
for _ in 0..digit {
if digit_index % 2 == 0 {
disk_map.push(Some(id));
} else {
disk_map.push(None);
}
}
if digit_index % 2 == 0 {
id += 1;
}
}
}
disk_map
}
pub fn calc_distance<T>(num_1: T, num_2: T) -> T
where
T: PartialOrd + Sub<Output = T>,