From 39d61cb91dc6f5a83b5e1a3ef985a70bb93fc9df Mon Sep 17 00:00:00 2001 From: Daniel Heras Quesada Date: Sun, 15 Dec 2024 12:53:05 +0100 Subject: [PATCH] day_10: part 1 done --- README.md | 2 +- assets/day_10_trail_map_input | 52 +++++++++++++++++++++++++++++------ src/advent_of_code/tue_10.rs | 44 +++++++++++++++++------------ 3 files changed, 71 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 8f5e41f..dcf56fa 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ https://adventofcode.com/2024 | 07 | Bridge Repair | :pushpin: | :pushpin: | Equation parsing | | 08 | Resonant Collinearity | :pushpin: | | Matrix exploration | | 09 | Disk fragmenter | :pushpin: | | Array indexing | -| 10 | Hoof It | | | | +| 10 | Hoof It | :pushpin: | | Path finding | | 11 | | | | | | 12 | | | | | | 13 | | | | | diff --git a/assets/day_10_trail_map_input b/assets/day_10_trail_map_input index cada9b3..ac1b0aa 100644 --- a/assets/day_10_trail_map_input +++ b/assets/day_10_trail_map_input @@ -1,8 +1,44 @@ -89010123 -78121874 -87430965 -96549874 -45678903 -32019012 -01329801 -10456732 +12109832101432101234107652158943210178765892 +03078456210145696701218943067654396549456701 +54562364345436789874327832107810387630345210 +65401875696925210765498017656901234521254321 +78078956787814321544567328943217890012189450 +69101045698701055432123410812206921983098765 +43232132509652566785010569701105435674549056 +58943001419143478994321678983210304105678143 +67653214328012988765690787894321213289437212 +45654301037001089650787096765010034576524301 +56789890156121072341256101896654123678915498 +43276765243234561212345234987783210569206789 +54109854312789870109012345676898765454106543 +45610123203650105438721056765609674323287012 +54781010154543216521635489832014589210398013 +67898543269854107610544376541023008101296323 +54987656576765678923455210458782112010387456 +23122189983454989012966904349698103465456567 +12033078012763210101877813234521098578956798 +03944565430887654012109320121034787632347897 +87856556021991047121238458945695698961036016 +96587432110872338930347567232780087654105125 +01498983321265427945656089101091109803234934 +32327465456766016859890176232892256712107843 +21012334569854105766763245001743343893256765 +30503129678945234897854632122654872894349854 +45614068798234012656906543213458961783210703 +21765878907178723765417891008965450654125612 +30854965416069654894328982567872342103054503 +48903010325450560761237813450561003276543678 +56012321210341981230106504341540214789432189 +67329630121212870341012415432634345695321012 +78478742198903965494543326998723456786540765 +89569653087654654987696547889010567847830874 +21052104676501723898587032378765676956921923 +32343015685432810767698121459034982349650010 +10478723794354903456567030760121061078744567 +21569654891263212347450177898267877101233498 +32108765430678903038321789783454978715012399 +47899834320545676129012876012543269856101087 +56938723011230983543903965987650156747801256 +40127619654321012652874854107890349832954343 +30034508763018723761765543236501212721096501 +21065619012349654890101234565432301430787432 diff --git a/src/advent_of_code/tue_10.rs b/src/advent_of_code/tue_10.rs index 88bda03..c0710dc 100644 --- a/src/advent_of_code/tue_10.rs +++ b/src/advent_of_code/tue_10.rs @@ -9,7 +9,6 @@ pub fn hoof_it(input: &str) -> usize { let mut sum_of_scores: usize = 0; - println!("The score list is: {:?}", vector_of_scores); // TODO: improve, this is dirty for score in vector_of_scores { sum_of_scores += score; @@ -24,7 +23,8 @@ pub fn explore_map(map: TrailMap) -> Vec { for y_index in 0..map.len() { for x_index in 0..map[y_index].len() { if map[y_index][x_index] == 0 { - trail_score_list.push(explore_position(x_index, y_index, &map)); + let mut reached_ends: Vec<(usize, usize)> = vec![]; + trail_score_list.push(explore_position(x_index, y_index, &map, &mut reached_ends)); } } } @@ -32,15 +32,23 @@ pub fn explore_map(map: TrailMap) -> Vec { trail_score_list } -pub fn explore_position(x: TrailPosition, y: TrailPosition, map: &TrailMap) -> usize { +pub fn explore_position( + x: TrailPosition, + y: TrailPosition, + map: &TrailMap, + reached_ends: &mut Vec<(usize, usize)>, +) -> usize { if map[y][x] == 9 { + reached_ends.push((x, y)); 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_position(next_position.0, next_position.1, map); + if map[next_position.1][next_position.0] == map[y][x] + 1 + && !reached_ends.contains(&(next_position.0, next_position.1)) + { + score_sum += explore_position(next_position.0, next_position.1, map, reached_ends); } } @@ -57,24 +65,24 @@ pub fn get_pos_surroundings( if x > 0 { trail_pos_vec.push((x - 1, y)); - if y > 0 { - trail_pos_vec.push((x - 1, y - 1)); - } - if y < map.len() - 1 { - trail_pos_vec.push((x - 1, y + 1)); - } + // if y > 0 { + // trail_pos_vec.push((x - 1, y - 1)); + // } + // if y < map.len() - 1 { + // trail_pos_vec.push((x - 1, y + 1)); + // } } if x < map[0].len() - 1 { trail_pos_vec.push((x + 1, y)); - if y > 0 { - trail_pos_vec.push((x + 1, y - 1)); - } - - if y < map.len() - 1 { - trail_pos_vec.push((x + 1, y + 1)); - } + // if y > 0 { + // trail_pos_vec.push((x + 1, y - 1)); + // } + // + // if y < map.len() - 1 { + // trail_pos_vec.push((x + 1, y + 1)); + // } } if y > 0 {