Man mano che cresciamo, riusciamo a capire testi sempre più complessi. Ma come si valuta il livello di complessità di un testo, e come possiamo scrivere programmi che lo facciano? In questo esercizio scriverai un programma che determina quanto è difficile leggere un testo e a quale età è più adatto.
Useremo la formula dell'indice di leggibilità automatico (ARI) per calcolare la complessità di un testo. L'ARI è stato sviluppato nel 1967 per valutare il livello scolastico statunitense richiesto per leggere un testo. Lo fa misurando la complessità delle parole e delle frasi. La complessità si misura in caratteri per parola e parole per frase. Più il valore è alto, più il testo è complesso.
Il programma deve mostrare le prime tre frasi del testo, ma non più di 50 caratteri per ogni frase.
Se una frase supera i 50 caratteri, stampa solo i primi 50 caratteri seguiti dai puntini di sospensione (...).
Se il testo contiene più di tre frasi, stampa come quarta riga solo i puntini di sospensione.
Supponiamo che ci sia un file chiamato "ari.txt" con il seguente contenuto (questo testo sarà usato in tutti gli esempi qui sotto):
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.
Il programma dovrà stampare:
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.
...
Il programma deve calcolare e stampare il numero di caratteri, parole e frasi del testo. Le frasi possono terminare con un punto, un punto esclamativo o un punto interrogativo. Gli spazi bianchi separano le parole all'interno di una frase. Quando conti il numero di caratteri per parola, conta tutti i caratteri non vuoti, compresi i segni di punteggiatura. Stampa le statistiche dopo l'anteprima del testo, separate da una riga vuota.
Ecco un esempio di output per la sola parte delle statistiche del testo:
Words: 34
Sentences: 5
Characters: 186
Date queste informazioni sul testo, possiamo calcolare il suo livello di complessità con la seguente formula:
score = 4.71 * chars / words + 0.5 * words / sentences - 21.43
Il programma deve calcolare e stampare il punteggio e l'età approssimativa necessaria per comprendere il testo.
| Punteggio | Età | Livello scolastico |
|---|---|---|
| 1 | 5-6 | Scuola dell'infanzia |
| 2 | 6-7 | Prima elementare |
| 3 | 7-8 | Seconda elementare |
| 4 | 8-9 | Terza elementare |
| 5 | 9-10 | Quarta elementare |
| 6 | 10-11 | Quinta elementare |
| 7 | 11-12 | Prima media |
| 8 | 12-13 | Seconda media |
| 9 | 13-14 | Terza media |
| 10 | 14-15 | Prima superiore |
| 11 | 15-16 | Seconda superiore |
| 12 | 16-17 | Terza superiore |
| 13 | 17-18 | Quarta superiore |
| 14 | 18-22 | Studente universitario |
Il punteggio deve essere stampato con due cifre significative dopo la virgola. Quando lo si usa per trovare l'età o il livello scolastico, il punteggio va arrotondato al numero intero più vicino e limitato a 14. Qui sotto c'è un esempio di output del programma:
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.
Iscriviti a Exercism per imparare e padroneggiare AWK con 3 concetti92 esercizi e il mentoring di persone reali, tutto gratis.