protected override string Solve2(IEnumerable <string> inputs) { var cpu = ServiceProvider.GetRequiredService <IntCodeCpu>(); var program = inputs.First().ToProgram(); var minutes = 0; var maze = ReadFile().Select(x => new MazeMovementOption(x.Split(","))).ToList(); var hasOxygen = maze.Where(x => x.TileType == MazeTileType.Goal).ToList(); while (hasOxygen.Any(x => x.Resolved == 0)) { foreach (var tile in hasOxygen.Where(x => x.Resolved == 0).ToList()) { foreach (var neighbor in MazeWalker.GetNeighbors(tile.Position, maze)) { if (neighbor.TileType == MazeTileType.Empty) { tile.Resolved = minutes; hasOxygen.Add(neighbor); } } } minutes++; } MazeWalker.Render(maze); var result = maze.Max(x => x.Resolved); return(result.ToString()); }