day_10: part 2 done
This commit is contained in:
@@ -12,7 +12,7 @@ https://adventofcode.com/2024
|
|||||||
| 07 | Bridge Repair | :pushpin: | :pushpin: | Equation parsing |
|
| 07 | Bridge Repair | :pushpin: | :pushpin: | Equation parsing |
|
||||||
| 08 | Resonant Collinearity | :pushpin: | | Matrix exploration |
|
| 08 | Resonant Collinearity | :pushpin: | | Matrix exploration |
|
||||||
| 09 | Disk fragmenter | :pushpin: | | Array indexing |
|
| 09 | Disk fragmenter | :pushpin: | | Array indexing |
|
||||||
| 10 | Hoof It | :pushpin: | | Path finding |
|
| 10 | Hoof It | :pushpin: | :pushpin: | Path finding |
|
||||||
| 11 | | | | |
|
| 11 | | | | |
|
||||||
| 12 | | | | |
|
| 12 | | | | |
|
||||||
| 13 | | | | |
|
| 13 | | | | |
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ pub fn historian_hysteria() {
|
|||||||
// println!("The disk checksum is {}", disk_checksum);
|
// println!("The disk checksum is {}", disk_checksum);
|
||||||
|
|
||||||
// Tuesday 10
|
// Tuesday 10
|
||||||
let trailhead_score = tue_10::hoof_it("./assets/day_10_trail_map_input");
|
let (trailhead_score, full_trailhead_score) =
|
||||||
|
tue_10::hoof_it("./assets/day_10_trail_map_input");
|
||||||
println!("The trail head sum score is {}", trailhead_score);
|
println!("The trail head sum score is {}", trailhead_score);
|
||||||
|
println!("The full trail head sum score is {}", full_trailhead_score);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ use utils::read_trail_map_input;
|
|||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
pub fn hoof_it(input: &str) -> usize {
|
pub fn hoof_it(input: &str) -> (usize, usize) {
|
||||||
let trail_map = read_trail_map_input(input);
|
let trail_map = read_trail_map_input(input);
|
||||||
|
|
||||||
let vector_of_scores = explore_map(trail_map);
|
let (vector_of_scores, vector_of_all_scores) = explore_map(trail_map);
|
||||||
|
|
||||||
let mut sum_of_scores: usize = 0;
|
let mut sum_of_scores: usize = 0;
|
||||||
|
|
||||||
@@ -14,22 +14,29 @@ pub fn hoof_it(input: &str) -> usize {
|
|||||||
sum_of_scores += score;
|
sum_of_scores += score;
|
||||||
}
|
}
|
||||||
|
|
||||||
sum_of_scores
|
let mut sum_of_all_scores: usize = 0;
|
||||||
|
for score in vector_of_all_scores {
|
||||||
|
sum_of_all_scores += score;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn explore_map(map: TrailMap) -> Vec<TrailScore> {
|
(sum_of_scores, sum_of_all_scores)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn explore_map(map: TrailMap) -> (Vec<TrailScore>, Vec<TrailScore>) {
|
||||||
let mut trail_score_list: Vec<TrailScore> = vec![];
|
let mut trail_score_list: Vec<TrailScore> = vec![];
|
||||||
|
let mut full_trail_score_list: Vec<TrailScore> = vec![];
|
||||||
|
|
||||||
for y_index in 0..map.len() {
|
for y_index in 0..map.len() {
|
||||||
for x_index in 0..map[y_index].len() {
|
for x_index in 0..map[y_index].len() {
|
||||||
if map[y_index][x_index] == 0 {
|
if map[y_index][x_index] == 0 {
|
||||||
let mut reached_ends: Vec<(usize, usize)> = vec![];
|
let mut reached_ends: Vec<(usize, usize)> = vec![];
|
||||||
trail_score_list.push(explore_position(x_index, y_index, &map, &mut reached_ends));
|
trail_score_list.push(explore_position(x_index, y_index, &map, &mut reached_ends));
|
||||||
|
full_trail_score_list.push(explore_all_positions(x_index, y_index, &map));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
trail_score_list
|
(trail_score_list, full_trail_score_list)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn explore_position(
|
pub fn explore_position(
|
||||||
@@ -55,6 +62,21 @@ pub fn explore_position(
|
|||||||
score_sum
|
score_sum
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn explore_all_positions(x: TrailPosition, y: TrailPosition, map: &TrailMap) -> usize {
|
||||||
|
if map[y][x] == 9 {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut score_sum: usize = 0;
|
||||||
|
for next_position in get_pos_surroundings(x, y, map) {
|
||||||
|
if map[next_position.1][next_position.0] == map[y][x] + 1 {
|
||||||
|
score_sum += explore_all_positions(next_position.0, next_position.1, map);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
score_sum
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_pos_surroundings(
|
pub fn get_pos_surroundings(
|
||||||
x: TrailPosition,
|
x: TrailPosition,
|
||||||
y: TrailPosition,
|
y: TrailPosition,
|
||||||
|
|||||||
Reference in New Issue
Block a user