CSES - Labyrintti

Annettuna on ruudukko, jossa jokainen ruutu on lattiaruutu tai seinäruutu. Merkki . tarkoittaa lattiaruutua ja merkki # tarkoittaa seinäruutua. Kaikki reunaruudut ovat seinäruutuja. Ruudukossa on myös yksi alkuruutu (A) ja yksi loppuruutu (B).

Tehtäväsi on etsiä lyhimmän reitin pituus alkuruudusta loppuruutuun. Reitin pituus on askelten määrä reitillä. Voit liikkua lattiaruutuja pitkin vaaka- ja pystysuunnassa.

Toteuta tiedostoon labyrinth.py funktio find_route, jolle annetaan ruudukko listana merkkijonoja. Funktion tulee palauttaa lyhimmän reitin pituus tai None, jos mitään reittiä ei ole olemassa.

def find_route(grid):
    # TODO

if __name__ == "__main__":
    grid = ["########",
            "#.#.B..#",
            "#A#.##.#",
            "#......#",
            "########"]
    print(find_route(grid)) # 6

    grid = ["########",
            "#B#...A#",
            "#.#.##.#",
            "#......#",
            "########"]
    print(find_route(grid)) # 9

    grid = ["########",
            "####..B#",
            "#.A#.#.#",
            "#..#...#",
            "########"]
    print(find_route(grid)) # None