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}
