CSES - Seinäpoisto

Labyrintissa on kahdenlaisia seinäruutuja: merkki # on reunalla oleva seinä ja merkki * on sisällä oleva seinä. Voit rikkoa sisällä olevaa seinää, jolloin pystyt kulkemaan vapaammin labyrintissa.

Tehtäväsi on etsiä reitti ruudusta A ruutuun B. Voit liikkua joka askeleella viereiseen ruutuun vaaka- tai pystysuunnassa. Mikä on pienin mahdollinen määrä seinäruutuja, jotka sinun täytyy rikkoa?

Toteuta tiedostoon breakwall.py funktio find_route, joka kertoo pienimmän rikottavien seinäruutujen määrän.

def find_route(grid):
    # TODO

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

Tässä tapauksessa voit liikkua askeleen vasemmalle, neljä askelta alaspäin sekä neljä askelta oikealle. Tämä reitti vaatii, että rikot kaksi seinäruutua.