Ruudukossa on n \times n ruutua, joista jokainen on aluksi seinää. Rivit ja sarakkeet on numeroitu 1 \dots n. Ruudukosta aletaan poistaa seinää muuttamalla seinäruutuja lattiaruuduiksi.
Tehtäväsi on pitää kirjaa huoneiden määrästä tässä prosessissa. Huoneissa lattiaruutuja voi kulkea vaaka- ja pystysuuntaisesti, kuten aiemmissa kurssin tehtävissä.
Toteuta luokka WallGrid
, jossa on seuraavat metodit:
remove
muuttaa ruudun (x,y) lattiaksi, mikäli se ei jo ole lattiaacount
ilmoittaa, montako huonetta ruudukossa on
Metodien tulee toimia tehokkaasti myös suurella ruudukolla.
Toteuta luokka tiedostoon wallgrid.py
seuraavan esimerkin mukaisesti.
class WallGrid: def __init__(self, n): # TODO def remove(self, x, y): # TODO def count(self): # TODO if __name__ == "__main__": w = WallGrid(5) print(w.count()) # 0 w.remove(2, 2) w.remove(4, 2) print(w.count()) # 2 w.remove(3, 2) print(w.count()) # 1 w.remove(2, 4) w.remove(2, 4) w.remove(4, 4) print(w.count()) # 3 w.remove(3, 3) print(w.count()) # 3 w.remove(3, 4) print(w.count()) # 1