コード例 #1
0
        public static int GetAnswer2(string[] input) => FindAllKeysMultiMaze(input); // 2020

        public static int FindAllKeys(string[] input)
        {
            var maze       = new L1Maze(input);
            var l2Maze     = new L2Maze(maze);
            var mazeRunner = new MazeRunner(l2Maze, l2Maze.StartPositions[0], 0);

            var allResults = BreadthFirstSearch(mazeRunner);

            return(allResults.First(t => t.HasAllKeys).MoveCount);
        }
コード例 #2
0
        private static int FindAllKeysMultiMaze(string[] input)
        {
            var multiMaze  = UpdateMazeToMultiMaze(input);
            var maze       = new L1Maze(multiMaze);
            var l2Maze     = new L2Maze(maze);
            var mazeRunner = new MultiMazeRunner(l2Maze, l2Maze.StartPositions, 0);

            var allResults = BreadthFirstSearchMulti(mazeRunner);

            return(allResults.First(t => t.HasAllKeys).MoveCount);
        }