Tehtäväsi on muodostaa jakauma merkkijonon erilaisten osajonojen pituuksista.
Esimerkiksi merkkijonossa abab
erilaiset osajonot ovat a
, b
, ab
, ba
, aba
, bab
ja abab
. Tässä tapauksessa jakauma on seuraava:
- pituus 1: osajonojen määrä 2
- pituus 2: osajonojen määrä 2
- pituus 3: osajonojen määrä 2
- pituus 4: osajonojen määrä 1
Toteuta tiedostoon distribution.py
funktio create_distribution
, joka muodostaa parametrina annetun merkkijonon erilaisten osajonojen jakauman. Funktion tulee palauttaa jakauma sanakirjana esimerkkien mukaisesti.
Funktiota testataan eri tilanteissa, joissa merkkijonon pituus on enintään 20 merkkiä ja se muodostuu merkeistä a
–z
. Funktion tulee toimia tehokkaasti kaikissa tällaisissa tapauksissa.
def create_distribution(string): # TODO if __name__ == "__main__": print(create_distribution("aaaa")) # {1: 1, 2: 1, 3: 1, 4: 1} print(create_distribution("abab")) # {1: 2, 2: 2, 3: 2, 4: 1} print(create_distribution("abcd")) # {1: 4, 2: 3, 3: 2, 4: 1} print(create_distribution("abbbbbb")) # {1: 2, 2: 2, 3: 2, 4: 2, 5: 2, 6: 2, 7: 1} print(create_distribution("aybabtu")) # {1: 5, 2: 6, 3: 5, 4: 4, 5: 3, 6: 2, 7: 1}