public void Day15Part1() { var repair = new OxygenRepairDroid(UserMode.LeastExplored); var result = repair.Repair(); var pathfinder = new AStarPathfinder(); var path = pathfinder.FindPath(result); var numberOfCommands = path.Count + 1; numberOfCommands.Should().Be(238); }
static void Main(string[] args) { var repair = new OxygenRepairDroid(UserMode.LeastExplored); var result = repair.Repair(); repair = new OxygenRepairDroid(UserMode.LeastExplored, result.Seen); result = repair.Repair(); //result.ShowScreen = true; Console.WriteLine($"x: {result.End.X}, y: {result.End.Y}"); // var pathfinder = new AStarPathfinder(); // var path = pathfinder.FindPath(result); // var numberOfCommands = path.Count + 1; Console.WriteLine($"Oxygen Regeneration Time: {result.TimeTillOxygenRegenerated()}"); }
public void Day15Part2() { var repair = new OxygenRepairDroid(UserMode.LeastExplored); var result = repair.Repair(); /* * I Don't know if this is a hack or if it always solves the problem in all cases * * The general strat is run the least explored algorithm once. and then run it again with the seen tiles * from the last run. As the algorithm prioritises the least visited tiles (including unvisited). This generally * finds the rest of the unvisited tiles that are missing. */ repair = new OxygenRepairDroid(UserMode.LeastExplored, result.Seen); result = repair.Repair(); var timeTillOxygen = result.TimeTillOxygenRegenerated(); timeTillOxygen.Should().Be(392); }