diff --git a/readability_is_king.py b/readability_is_king.py index 6591d7f..1ee8cd6 100644 --- a/readability_is_king.py +++ b/readability_is_king.py @@ -1,6 +1,7 @@ # Readability is King Codewars Kata https://www.codewars.com/kata/52b2cf1386b31630870005d4 def avarage_words_sentence(text): + text = text.replace("!", ".").replace("?", ".") sentences = text.split(".") sentences.pop(-1) @@ -12,13 +13,49 @@ def avarage_words_sentence(text): return sum(average_words_sentence) / len(average_words_sentence) -def avarage_syllables(text): +def avarage_count_syllables(text): vowels = {"a", "e", "i", "o", "u"} + sentences = text.split(".") + sentences.pop(-1) + + count_words = {} + + for sentence in sentences: + sentence = sentence.split() + for word in sentence: + word = word.lower() + if word not in count_words: + count_words[word] = {"count": 1, "vowels": {"count": 0, "position": {}}} + else: + count_words[word]["count"] += 1 + + for word in count_words: + for i, char in enumerate(word): + if char in vowels: + count_words[word]["vowels"]["count"] += 1 + count_words[word]["vowels"]["position"][i] = i + + for word in count_words: + if len(count_words[word]["vowels"]["position"]) > 1: + for position in count_words[word]["vowels"]["position"]: + if position + 1 in count_words[word]["vowels"]["position"]: + count_words[word]["vowels"]["count"] -= 1 + sum_vowels = 0 + for word in count_words: + sum_vowels += count_words[word]["vowels"]["count"] * count_words[word]["count"] + + sum_words = 0 + for word in count_words: + sum_words += count_words[word]["count"] + return sum_vowels / sum_words + def flesch_kincaid(text): - average_words_sentence = avarage_words_sentence(text) - avaraage_syllables = avaraage_syllables(text) + average_sentence = avarage_words_sentence(text) + print(average_sentence) + avarage_syllables = avarage_count_syllables(text) + print(avarage_syllables) + + return round((0.39 * average_sentence) + (11.8 * avarage_syllables) - 15.59, 2) - return average_words_sentence - -print(flesch_kincaid("To be or not to be. That is the question.")) \ No newline at end of file +print(flesch_kincaid("Sweet active! Active cover happiness the sun jumps jumps happiness cute! Cuddles cover cover walks! Fun sweet.")) \ No newline at end of file