En grandissant, on arrive à comprendre des textes de plus en plus complexes. Mais comment évaluer le niveau de complexité d'un texte donné, et comment écrire des programmes qui s'en chargent ? Dans cet exercice, tu vas écrire un programme qui détermine la difficulté de lecture d'un texte et l'âge auquel il est le mieux adapté.
Nous allons utiliser la formule de l'indice de lisibilité automatisé (ARI) pour calculer la complexité d'un texte. L'ARI a été développé en 1967 pour évaluer le niveau scolaire américain nécessaire pour lire un texte. Il y parvient en mesurant la complexité des mots et des phrases. Cette complexité se mesure en caractères par mot et en mots par phrase. Plus la valeur est élevée, plus le texte est complexe.
Ton programme doit afficher les trois premières phrases du texte, mais pas plus de 50 caractères par phrase.
Si une phrase dépasse 50 caractères, n'affiche que ses 50 premiers caractères, suivis de points de suspension (...).
Si le texte contient plus de trois phrases, affiche seulement des points de suspension sur la quatrième ligne.
Supposons qu'il existe un fichier nommé « ari.txt » contenant le texte suivant (ce texte servira pour tous les exemples ci-dessous) :
ARI was designed for military use in 1967. It was for real-time monitoring of readability on typewriters. It offered an automated counting method. It has similar results to other frameworks. This validates its accuracy.
Le programme doit alors afficher :
The text is:
ARI was designed for military use in 1967.
It was for real-time monitoring of readability on ...
It offered an automated counting method.
...
Le programme doit calculer et afficher le nombre de caractères, de mots et de phrases du texte. Les phrases peuvent se terminer par un point, un point d'exclamation ou un point d'interrogation. Les espaces séparent les mots d'une phrase. Pour compter le nombre de caractères par mot, compte tous les caractères non blancs, y compris les signes de ponctuation. Affiche les statistiques après l'aperçu du texte, en les séparant par une ligne vide.
Voici un exemple de sortie pour la partie consacrée aux statistiques du texte :
Words: 34
Sentences: 5
Characters: 186
À partir de ces informations sur le texte, on peut calculer son niveau de complexité à l'aide de la formule suivante :
score = 4.71 * chars / words + 0.5 * words / sentences - 21.43
Le programme doit calculer et afficher le score ainsi que l'âge approximatif nécessaire pour comprendre le texte.
| Score | Âge | Niveau scolaire |
|---|---|---|
| 1 | 5-6 | Kindergarten |
| 2 | 6-7 | First Grade |
| 3 | 7-8 | Second Grade |
| 4 | 8-9 | Third Grade |
| 5 | 9-10 | Fourth Grade |
| 6 | 10-11 | Fifth Grade |
| 7 | 11-12 | Sixth Grade |
| 8 | 12-13 | Seventh Grade |
| 9 | 13-14 | Eighth Grade |
| 10 | 14-15 | Ninth Grade |
| 11 | 15-16 | Tenth Grade |
| 12 | 16-17 | Eleventh Grade |
| 13 | 17-18 | Twelfth Grade |
| 14 | 18-22 | College student |
Le score doit être affiché avec deux chiffres significatifs après la virgule. Lorsqu'on l'utilise pour déterminer l'âge ou le niveau scolaire, le score doit être arrondi à l'entier le plus proche et plafonné à 14. Voici un exemple de sortie du programme :
The text is:
ARI was designed for military use in 1967.
It was for real-time monitoring of readability on ...
It offered an automated counting method.
...
Words: 34
Sentences: 5
Characters: 186
Score: 7.74
This text should be understood by 12-13 year-olds.
Inscris-toi sur Exercism pour apprendre et maîtriser AWK avec 3 concepts92 exercices, et un vrai mentorat humain, le tout gratuitement.