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); }
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); }