예제 #1
0
        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);
        }
예제 #2
0
        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()}");
        }
예제 #3
0
        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);
        }