From 16a5eff3bd5961ce5e4ac7aca74de7ed978f84f4 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Thu, 12 Dec 2019 16:27:25 -0500 Subject: [PATCH] optimize day 12 --- Day1.cs | 4 ++-- Day12.cs | 35 ++++++----------------------------- 2 files changed, 8 insertions(+), 31 deletions(-) diff --git a/Day1.cs b/Day1.cs index 2b7be62..2d3ef67 100644 --- a/Day1.cs +++ b/Day1.cs @@ -27,8 +27,8 @@ namespace aoc2019 return total; } - public override string Part1() => $"{masses.Select(FuelCost).Sum()}"; + public override string Part1() => $"{masses.Sum(FuelCost)}"; - public override string Part2() => $"{masses.Select(FullCost).Sum()}"; + public override string Part2() => $"{masses.Sum(FullCost)}"; } } diff --git a/Day12.cs b/Day12.cs index 43682c1..40d7b1e 100644 --- a/Day12.cs +++ b/Day12.cs @@ -109,40 +109,17 @@ namespace aoc2019 public override string Part2() { - moons = startingPositions; - step = 0; - var seenX = new HashSet(); - var seenY = new HashSet(); - var seenZ = new HashSet(); - int repX = 0, repY = 0, repZ = 0; + int cycleX = 0, cycleY = 0, cycleZ = 0; - while (true) - { - if (repX != 0 && repY != 0 && repZ != 0) break; + while (cycleX == 0 || cycleY == 0 || cycleZ == 0) { Step(); - - if (repX == 0) - { - var xcoords = moons.Select(m => (m.x, m.dx)).ToDelimitedString(); - if (seenX.Contains(xcoords)) repX = step; - seenX.Add(xcoords); - } - if (repY == 0) - { - var ycoords = moons.Select(m => (m.y, m.dy)).ToDelimitedString(); - if (seenY.Contains(ycoords)) repY = step; - seenY.Add(ycoords); - } - if (repZ == 0) - { - var zcoords = moons.Select(m => (m.z, m.dz)).ToDelimitedString(); - if (seenZ.Contains(zcoords)) repZ = step; - seenZ.Add(zcoords); - } step++; + if (cycleX == 0 && moons.All(m => m.dx == 0)) cycleX = step * 2; + if (cycleY == 0 && moons.All(m => m.dy == 0)) cycleY = step * 2; + if (cycleZ == 0 && moons.All(m => m.dz == 0)) cycleZ = step * 2; } - return $"{LCM(repX, LCM(repY, repZ))}"; + return $"{LCM(cycleX, LCM(cycleY, cycleZ))}"; } } }