Refactor Day08 and Day09 to update collection types and method names for improved consistency and clarity
This commit is contained in:
parent
3360b6cfba
commit
411672d8c3
|
|
@ -44,12 +44,12 @@ public class Day08 : IPuzzleSolver<long>
|
||||||
return lastConnected.a.x * lastConnected.b.x;
|
return lastConnected.a.x * lastConnected.b.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<List<Coordinate>> CreateCircuits(IEnumerable<Coordinate> jBoxes)
|
private List<HashSet<Coordinate>> CreateCircuits(IEnumerable<Coordinate> jBoxes)
|
||||||
{
|
{
|
||||||
return jBoxes.Select(p => new List<Coordinate> { p }).ToList();
|
return jBoxes.Select(p => new HashSet<Coordinate> { p }).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<List<Coordinate>> CombineCircuits(List<List<Coordinate>> circuits,
|
private List<HashSet<Coordinate>> CombineCircuits(List<HashSet<Coordinate>> circuits,
|
||||||
IEnumerable<(Coordinate boxA, Coordinate boxB)> jBoxPairs, int amountToConnect)
|
IEnumerable<(Coordinate boxA, Coordinate boxB)> jBoxPairs, int amountToConnect)
|
||||||
{
|
{
|
||||||
circuits = jBoxPairs
|
circuits = jBoxPairs
|
||||||
|
|
@ -58,7 +58,7 @@ public class Day08 : IPuzzleSolver<long>
|
||||||
return circuits;
|
return circuits;
|
||||||
}
|
}
|
||||||
|
|
||||||
private (Coordinate a, Coordinate b) LastCombinedConnectAllCircuits(List<List<Coordinate>> circuits,
|
private (Coordinate a, Coordinate b) LastCombinedConnectAllCircuits(List<HashSet<Coordinate>> circuits,
|
||||||
IEnumerable<(Coordinate boxA, Coordinate boxB)> jBoxPairs)
|
IEnumerable<(Coordinate boxA, Coordinate boxB)> jBoxPairs)
|
||||||
{
|
{
|
||||||
foreach (var jBoxPair in jBoxPairs)
|
foreach (var jBoxPair in jBoxPairs)
|
||||||
|
|
@ -75,7 +75,7 @@ public class Day08 : IPuzzleSolver<long>
|
||||||
return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y) + (a.z - b.z) * (a.z - b.z);
|
return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y) + (a.z - b.z) * (a.z - b.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<List<Coordinate>> ConnectJBoxes(Coordinate a, Coordinate b, List<List<Coordinate>> circuits)
|
private List<HashSet<Coordinate>> ConnectJBoxes(Coordinate a, Coordinate b, List<HashSet<Coordinate>> circuits)
|
||||||
{
|
{
|
||||||
var circuitToAddBTo = circuits.First(circuit => circuit.Contains(a));
|
var circuitToAddBTo = circuits.First(circuit => circuit.Contains(a));
|
||||||
var circuitToAddATo = circuits.First(circuit => circuit.Contains(b));
|
var circuitToAddATo = circuits.First(circuit => circuit.Contains(b));
|
||||||
|
|
@ -85,7 +85,7 @@ public class Day08 : IPuzzleSolver<long>
|
||||||
return circuits;
|
return circuits;
|
||||||
}
|
}
|
||||||
|
|
||||||
circuitToAddBTo.AddRange(circuitToAddATo);
|
circuitToAddBTo.UnionWith(circuitToAddATo);
|
||||||
circuits.Remove(circuitToAddATo);
|
circuits.Remove(circuitToAddATo);
|
||||||
return circuits;
|
return circuits;
|
||||||
}
|
}
|
||||||
|
|
@ -108,7 +108,7 @@ public class Day08 : IPuzzleSolver<long>
|
||||||
return pairs;
|
return pairs;
|
||||||
}
|
}
|
||||||
|
|
||||||
private long MultiplyLargestCircuitLength(List<List<Coordinate>> circuits, int amountMultiply)
|
private long MultiplyLargestCircuitLength(List<HashSet<Coordinate>> circuits, int amountMultiply)
|
||||||
{
|
{
|
||||||
return circuits
|
return circuits
|
||||||
.Select(circuit => (long)circuit.Count)
|
.Select(circuit => (long)circuit.Count)
|
||||||
|
|
|
||||||
|
|
@ -54,12 +54,12 @@ public class Day09 : IPuzzleSolver<long>
|
||||||
|
|
||||||
private IEnumerable<CoordinatePair> GetAllPossibleRectanglesAsPairs(Coordinate[] redTiles)
|
private IEnumerable<CoordinatePair> GetAllPossibleRectanglesAsPairs(Coordinate[] redTiles)
|
||||||
{
|
{
|
||||||
return Combinations(redTiles).Select(x => AsMinMax(x.a, x.b));
|
return Combinations(redTiles).Select(x => AsPair(x.a, x.b));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CoordinatePair[] GetBordersAsPairs(Coordinate[] redTiles)
|
private CoordinatePair[] GetBordersAsPairs(Coordinate[] redTiles)
|
||||||
{
|
{
|
||||||
return GetBorders(redTiles).Select(x => AsMinMax(x.a, x.b)).ToArray();
|
return GetBorders(redTiles).Select(x => AsPair(x.a, x.b)).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsRectangleInsideBorders(CoordinatePair[] borders, CoordinatePair rectangle)
|
private bool IsRectangleInsideBorders(CoordinatePair[] borders, CoordinatePair rectangle)
|
||||||
|
|
@ -67,7 +67,7 @@ public class Day09 : IPuzzleSolver<long>
|
||||||
return !borders.Any(border => RectangleCrossesBorder(rectangle, border));
|
return !borders.Any(border => RectangleCrossesBorder(rectangle, border));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CoordinatePair AsMinMax(Coordinate a, Coordinate b)
|
private CoordinatePair AsPair(Coordinate a, Coordinate b)
|
||||||
{
|
{
|
||||||
return (Math.Min(a.x, b.x), Math.Min(a.y, b.y), Math.Max(a.x, b.x), Math.Max(a.y, b.y));
|
return (Math.Min(a.x, b.x), Math.Min(a.y, b.y), Math.Max(a.x, b.x), Math.Max(a.y, b.y));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue