diff --git a/AdventOfCode/Problems/AOC2025/Day8/Playground.cs b/AdventOfCode/Problems/AOC2025/Day8/Playground.cs index 2cd0246..2536c55 100644 --- a/AdventOfCode/Problems/AOC2025/Day8/Playground.cs +++ b/AdventOfCode/Problems/AOC2025/Day8/Playground.cs @@ -13,8 +13,8 @@ internal class Playground : Problem public override void CalculatePart1() { - var boxes = _boxPositions.Select((p, i) => new JunctionBox(i, p, [])); - var closest = GetClosestPairs(_boxPositions, 10); + var boxes = _boxPositions.Select((p, i) => new JunctionBox(i, p, [])).ToArray(); + var closest = GetClosestPairs(_boxPositions, 1000); foreach (var (a, b)in closest) { var boxA = boxes.First(box => box.Pos == a); @@ -22,12 +22,31 @@ internal class Playground : Problem boxA.Connections.Add(boxB.Id); boxB.Connections.Add(boxA.Id); } - + var networks = TraceNetworks(boxes); + Part1 = networks.Select(n => (long)n.Count).OrderDescending().Take(3).Aggregate((a, b) => a * b); } - private static long[] TraceNetworks(JunctionBox[] junctionBoxes) + private static List> TraceNetworks(JunctionBox[] junctionBoxes) { - return []; + var networks = new List>(); + foreach (var box in junctionBoxes) + { + if (networks.Any(n => n.Contains(box.Id))) + continue; + var net = new HashSet() { box.Id }; + TraceJunction(box, junctionBoxes, net); + networks.Add(net); + } + return networks;//.Where(n => n.Count > 0).ToList(); + } + + private static void TraceJunction(JunctionBox box, JunctionBox[] boxes, HashSet result) + { + foreach (var connection in box.Connections) + { + if (result.Add(connection)) + TraceJunction(boxes[connection], boxes, result); + } } private static List<(Vec3 a , Vec3 b)> GetClosestPairs(Vec3[] boxes, int count = 10) @@ -55,11 +74,11 @@ internal class Playground : Problem public override void LoadInput() { - _boxPositions = ReadInputLines("sample.txt") + _boxPositions = ReadInputLines("input.txt") .Select(l => l.Split(',').Select(int.Parse)) .Select(c => new Vec3(c.First(), c.Skip(1).First(), c.Last())) .ToArray(); } - private record JunctionBox(int Id, Vec3 Pos, HashSet Connections); + private record class JunctionBox(int Id, Vec3 Pos, HashSet Connections); }