From b03404fe6a9cfbd73d694d06589a3101835536d6 Mon Sep 17 00:00:00 2001 From: Sebastian Lindemeier Date: Sat, 6 Dec 2025 13:55:52 +0100 Subject: [PATCH] Refactor Day06 to use LINQ for parsing numbers by column --- AoC_2025/Day06.cs | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/AoC_2025/Day06.cs b/AoC_2025/Day06.cs index 1f3d299..7bc4bb0 100644 --- a/AoC_2025/Day06.cs +++ b/AoC_2025/Day06.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Data.Common; using System.IO; using System.Linq; using AdvenOfCode.Contracts; @@ -65,26 +66,13 @@ public class Day06 : IPuzzleSolver private static long[][] ParseNumbersByColumn(string[] numberLines) { - List numberColumns = []; - List currentColumn = []; - for (var i = 1; i <= numberLines[0].Length; i++) - { - var nextNumber = numberLines.Aggregate("", (acc, numberLine) => acc + numberLine[^i]); - - if (!string.IsNullOrWhiteSpace(nextNumber)) - { - currentColumn.Add(long.Parse(nextNumber)); - } - else - { - numberColumns.Add(currentColumn.ToArray()); - currentColumn = []; - } - } - numberColumns.Add(currentColumn.ToArray()); - - numberColumns.Reverse(); - return numberColumns.ToArray(); + var (numberColumns, lastColumn) = Enumerable.Range(1, numberLines[0].Length) + .Select(i => numberLines.Aggregate("", (acc, numberLine) => acc + numberLine[^i])) + .Aggregate((columns: (List)[[]], column: (long[])[]), + (acc, number) => string.IsNullOrWhiteSpace(number) + ? ([..acc.columns, acc.column], []) + : (acc.columns, [..acc.column, long.Parse(number)])); + return [lastColumn, ..Enumerable.Reverse(numberColumns)]; } private (Func operation, long opBaseValue) ParseOperand(string operand) => operand switch