Retour aux défis
Moyen 0 résolus 0 % de réussite

Readability Grade

Estimate the school grade needed to read a text.

Ce que vous allez apprendre

  • Compter les lettres, les mots et les phrases
  • Appliquer la formule de Coleman-Liau
  • Arrondir et borner un niveau scolaire

Problème

The Coleman-Liau index estimates the U.S. grade level for a text: index = 0.0588 × L − 0.296 × S − 15.8, where L is the average number of letters per 100 words and S the average number of sentences per 100 words. Letters are A–Z/a–z, words are separated by spaces, and each ., ! or ? ends a sentence. Round the index to the nearest whole number.

Implement readability_grade(text).

Input

text: English text with at least one word.

Output

Return "Before Grade 1" when the index is below 1, "Grade 16+" when it is 16 or more, otherwise "Grade N".

Contraintes

1 ≤ length ≤ 10,000

Exemples

Exemple 1
Entrée :
text = "One fish. Two fish. Red fish. Blue fish."

Sortie attendue :
expected = "Before Grade 1"
Entrée :
std::string text = "One fish. Two fish. Red fish. Blue fish.";

Sortie attendue :
std::string expected = "Before Grade 1";
Entrée :
string text = "One fish. Two fish. Red fish. Blue fish.";

Sortie attendue :
string expected = "Before Grade 1";

Explication

29 letters, 8 words and 4 sentences give an index below 1: "Before Grade 1".

Exemple 2
Entrée :
text = "Harry Potter was a highly unusual boy in many ways. For one thing, he hated the summer holidays more than any other time of year. For another, he really wanted to do his homework, but was forced to do it in secret, in the dead of the night. And he also happened to be a wizard."

Sortie attendue :
expected = "Grade 5"
Entrée :
std::string text = "Harry Potter was a highly unusual boy in many ways. For one thing, he hated the summer holidays more than any other time of year. For another, he really wanted to do his homework, but was forced to do it in secret, in the dead of the night. And he also happened to be a wizard.";

Sortie attendue :
std::string expected = "Grade 5";
Entrée :
string text = "Harry Potter was a highly unusual boy in many ways. For one thing, he hated the summer holidays more than any other time of year. For another, he really wanted to do his homework, but was forced to do it in secret, in the dead of the night. And he also happened to be a wizard.";

Sortie attendue :
string expected = "Grade 5";

Explication

The average word and sentence lengths give an index that rounds to 5: "Grade 5".

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Compte séparément les lettres, les mots et les phrases à partir du même texte.

Indice 2

Utilise la formule d’indice donnée avec les lettres pour 100 mots et les phrases pour 100 mots.

Indice 3

Arrondis à l’entier le plus proche avant de choisir le libellé de sortie.

Complexité attendue

temps O(n), espace supplémentaire O(1)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.