CSES - Suunnittelu

Tehtäväsi on suunnitella labyrintti, jossa lyhimmän reitin pituus ruudusta A ruutuun B on haluttu luku.

Labyrintin tulee täyttää samat vaatimukset kuin viikon aiemmassa tehtävässä. Lisäksi labyrintin leveys ja korkeus saa olla enintään 10 ruutua.

Toteuta tiedostoon design.py funktio create_grid, jolle annetaan parametrina positiivinen kokonaisluku: haluttu reitin pituus. Funktion tulee palauttaa labyrintti listana merkkijonoja.

Voit muodostaa minkä tahansa labyrintin, jossa reitin pituus on haluttu. Jos labyrinttia ei ole mahdollista muodostaa, funktion tulee palauttaa None.

def create_grid(steps):
    # TODO

if __name__ == "__main__":
    grid = create_grid(5)
    print("\n".join(grid))
    # ########
    # #.#B...#
    # #.#.##.#
    # #.....A#
    # ########

    grid = create_grid(10)
    print("\n".join(grid))
    # ########
    # #.#A...#
    # #.####.#
    # #B.....#
    # #.####.#
    # #......#
    # ########

    grid = create_grid(42)
    print(grid) # None

Yllä olevassa koodissa on esimerkit labyrinteista, joissa lyhimmän reitin pituus on 5 ja 10 askelta. Sinun ei kuitenkaan tarvitse muodostaa juuri tällaisia labyrintteja. Ei ole olemassa vaatimukset täyttävää labyrinttia, jossa lyhimmän reitin pituus on 42 askelta.