From a4cb169566bf42ad010b88cd95cf9c249b862472 Mon Sep 17 00:00:00 2001 From: Khamraj Rohit Date: Tue, 17 Dec 2024 09:40:15 -0500 Subject: [PATCH 1/2] fix part 2 --- .../Problems/AOC2024/Day9/DiskFragmenter.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/AdventOfCode/Problems/AOC2024/Day9/DiskFragmenter.cs b/AdventOfCode/Problems/AOC2024/Day9/DiskFragmenter.cs index 521ae22..ce741b1 100644 --- a/AdventOfCode/Problems/AOC2024/Day9/DiskFragmenter.cs +++ b/AdventOfCode/Problems/AOC2024/Day9/DiskFragmenter.cs @@ -22,7 +22,16 @@ internal class DiskFragmenter : Problem public override void CalculatePart2() { var blocks = ExpandBlocks(_data); + var empty = blocks.Where(b => b.isEmpty).Sum(b => b.length); + var files = blocks.Where(b => !b.isEmpty).Sum(b => b.length); CompactV2(blocks); + var empty2 = blocks.Where(b => b.isEmpty).Sum(b => b.length); + var files2 = blocks.Where(b => !b.isEmpty).Sum(b => b.length); + + if (empty != empty2) + Console.WriteLine("Empty space does not match"); + if (files != files2) + Console.WriteLine($"Files space does not match Befor: {files} -> {files2}"); //Print(blocks); // Too High: 8838426222802 Part2 = ComputeHashV2(blocks); @@ -174,10 +183,16 @@ internal class DiskFragmenter : Problem } //Extend Right Block else if (idx + 1 < blocks.Count && blocks[idx + 1].isEmpty) + { blocks[idx + 1].length += block.length; + blocks.RemoveAt(idx); + } //Extend Left Block else if (idx - 1 > 0 && blocks[idx - 1].isEmpty) + { blocks[idx - 1].length += block.length; + + } //Insert new Empty Block else blocks[idx] = new Block(block.length); From ba7e6d4be061c4b271800f993aec3514aa00b802 Mon Sep 17 00:00:00 2001 From: Khamraj Rohit Date: Tue, 17 Dec 2024 09:40:42 -0500 Subject: [PATCH 2/2] Update DiskFragmenter.cs --- AdventOfCode/Problems/AOC2024/Day9/DiskFragmenter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AdventOfCode/Problems/AOC2024/Day9/DiskFragmenter.cs b/AdventOfCode/Problems/AOC2024/Day9/DiskFragmenter.cs index ce741b1..207885f 100644 --- a/AdventOfCode/Problems/AOC2024/Day9/DiskFragmenter.cs +++ b/AdventOfCode/Problems/AOC2024/Day9/DiskFragmenter.cs @@ -191,7 +191,7 @@ internal class DiskFragmenter : Problem else if (idx - 1 > 0 && blocks[idx - 1].isEmpty) { blocks[idx - 1].length += block.length; - + blocks.RemoveAt(idx); } //Insert new Empty Block else