Tehtäväsi on laskea, monellako tavalla merkeistä a
–z
voidaan muodostaa merkin pituinen merkkijono, jossa kaikki vierekkäiset merkit ovat myös vierekkäin aakkosissa.
Kun , haluttu vastaus on . Tässä merkkijonon ensimmäinen merkki voi olla mikä tahansa merkki väliltä a
–z
(yhteensä vaihtoehtoa). Jos merkki on a
tai z
, seuraavan merkin valintaan on yksi vaihtoehto. Muuten seuraavan merkin valintaan on kaksi vaihtoehtoa. Tästä saadaan vastaus .
Kun , haluttuja merkkijonoja ovat esimerkiksi ababa
, cdcba
ja bcdef
.
Toteuta tiedostoon onediff.py
funktio count_strings
, jolle annetaan merkkijonon pituus. Funktion tulee palauttaa merkkijonojen määrä.
Funktion tulee toimia tehokkaasti, kun merkkijonon pituus on välillä .
def count_strings(n): # TODO if __name__ == "__main__": print(count_strings(1)) # 26 print(count_strings(2)) # 50 print(count_strings(3)) # 98 print(count_strings(4)) # 192 print(count_strings(42)) # 36766943673096 print(count_strings(100)) # 7073450400109633000218032957656