Annettuna on ruudukko, jossa jokainen ruutu on taivasruutu tai tähtiruutu. Merkki .
tarkoittaa taivasruutua ja merkki *
tarkoittaa tähtiruutua.
Tehtäväsi on laskea, montako erilaista tähtikuviota ruudukossa esiintyy. Kaksi tähtiruutua kuuluvat samaan tähtikuvioon, jos ne ovat vierekkäin vaaka-, pysty- tai vinosuunnassa.
Kaksi tähtikuviota tulkitaan erilaisiksi myös silloin, kun olisi mahdollista saada ne samanlaisiksi pyöritysten ja peilausten avulla. Tehtäväpohjan esimerkit selventävät asiaa.
Toteuta tiedostoon stars.py
funktio count_patterns
, jolle annetaan ruudukko listana merkkijonoja. Funktion tulee palauttaa erilaisten tähtikuvioiden määrä.
def count_patterns(grid): # TODO if __name__ == "__main__": grid = ["..*..*..", "**.....*", ".....**.", "...*....", ".**....*"] print(count_patterns(grid)) # 2 grid = ["....*..*", "*.......", "......*.", "..*.....", "......*."] print(count_patterns(grid)) # 1 grid = ["***.*.**", ".*..*..*", ".*.***..", ".......*", "......**"] print(count_patterns(grid)) # 4 grid = ["***.***.", "..*...*.", "**..**..", "..*...*.", "**..**.."] print(count_patterns(grid)) # 1