From f91772c4bf91f062aa5b86ffab76ad0e6d59bdd1 Mon Sep 17 00:00:00 2001 From: Timo Schneider Date: Tue, 9 Dec 2025 22:04:29 +0100 Subject: [PATCH] finished day07 --- README.md | 30 +++++++++++++++--------------- src/day07/mod.rs | 4 +--- src/day07/part07a.rs | 27 ++++++++++++++++++++++++++- src/day07/part07b.rs | 27 ++++++++++++++++++++++++++- 4 files changed, 68 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 83fb4c9..3931188 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,23 @@ # Advent of Code 2025 ```bash -day01:A => 1150 ( 56us) -day01:B => 1150 ( 55us) -day02:A => 31839939622 ( 7769us) -day02:B => 41662374059 ( 64866us) -day03:A => 16812 ( 81us) -day03:B => 166345822896410 ( 275us) -day04:A => 1518 ( 195us) -day04:B => 8665 ( 3720us) -day05:A => 701 ( 139us) +day01:A => 1150 ( 49us) +day01:B => 1150 ( 47us) +day02:A => 31839939622 ( 7731us) +day02:B => 41662374059 ( 64732us) +day03:A => 16812 ( 84us) +day03:B => 166345822896410 ( 286us) +day04:A => 1518 ( 202us) +day04:B => 8665 ( 3737us) +day05:A => 701 ( 140us) day05:B => 352340558684863 ( 19us) -day06:A => 6503327062445 ( 194us) -day06:B => 9640641878593 ( 132us) -day07:A => 0 ( 0us) -day07:B => 0 ( 0us) +day06:A => 6503327062445 ( 207us) +day06:B => 9640641878593 ( 133us) +day07:A => 1678 ( 49us) +day07:B => 357525737893560 ( 55us) day08:A => 0 ( 0us) day08:B => 0 ( 0us) -day09:A => 4725826296 ( 162us) +day09:A => 4725826296 ( 164us) day09:B => 0 ( 0us) ---------- - 78285us + 81857us ``` \ No newline at end of file diff --git a/src/day07/mod.rs b/src/day07/mod.rs index d043c72..1f17067 100644 --- a/src/day07/mod.rs +++ b/src/day07/mod.rs @@ -23,14 +23,12 @@ mod tests { ..............."; #[test] - #[ignore] fn part07a() { assert_eq!(part07a::solve(PUZZLE.to_string()), 21); } #[test] - #[ignore] fn part07b() { - assert_eq!(part07b::solve(PUZZLE.to_string()), 0); + assert_eq!(part07b::solve(PUZZLE.to_string()), 40); } } diff --git a/src/day07/part07a.rs b/src/day07/part07a.rs index 986c86a..6f1c59d 100644 --- a/src/day07/part07a.rs +++ b/src/day07/part07a.rs @@ -1,4 +1,29 @@ pub fn solve(puzzle: String) -> u64 { - 0 // TODO + let mut solution = 0; + let mut lines = puzzle.lines(); + let mut source = lines + .next() + .unwrap() + .chars() + .map(|c| match c { 'S' => 1, _ => 0 } ) + .collect::>(); + + lines.for_each(|line| { + let mut next_source = source.clone(); + line.chars().zip(source.iter()).enumerate().for_each(|(i, x)| { + match x { + ('^', 1) => { + solution += 1; + next_source[i-1] = 1; + next_source[i] = 0; + next_source[i+1] = 1; + }, + _ => (), + } + }); + source = next_source; + }); + + solution } diff --git a/src/day07/part07b.rs b/src/day07/part07b.rs index 986c86a..fd716cd 100644 --- a/src/day07/part07b.rs +++ b/src/day07/part07b.rs @@ -1,4 +1,29 @@ pub fn solve(puzzle: String) -> u64 { - 0 // TODO + let mut solution = 0; + let mut lines = puzzle.lines(); + let mut source = lines + .next() + .unwrap() + .chars() + .map(|c| match c { 'S' => (1, 1), _ => (0, 0) } ) + .collect::>(); + + lines.for_each(|line| { + let mut next_source = source.clone(); + line.chars().zip(source.iter()).enumerate().for_each(|(i, x)| { + match x { + ('^', (1, weight)) => { + solution += weight; + next_source[i-1] = (1 , next_source[i-1].1 + weight); + next_source[i] = (0, 0); + next_source[i+1] = (1 , next_source[i+1].1 + weight) + }, + _ => (), + } + }); + source = next_source; + }); + + solution + 1 }