À medida que crescemos, conseguimos compreender textos cada vez mais complexos. Mas como se avalia o nível de complexidade de um texto, e como podemos criar programas que o façam? Neste exercício, vais escrever um programa que determina quão difícil é ler um texto e para que idade ele é mais adequado.
Vamos usar a fórmula do índice de legibilidade automática (ARI) para calcular a complexidade de um texto. O ARI foi desenvolvido em 1967 para avaliar o nível escolar dos Estados Unidos necessário para ler um texto. Faz isso medindo a complexidade das palavras e das frases. A complexidade mede-se em carateres por palavra e palavras por frase. Um valor mais alto significa maior complexidade.
O teu programa deve mostrar as três primeiras frases do texto, mas não mais de 50 carateres por frase.
Se alguma frase tiver mais de 50 carateres, imprime apenas os primeiros 50 carateres seguidos de reticências (...).
Se o texto tiver mais de três frases, mostra apenas reticências como quarta linha.
Suponhamos que existe um ficheiro chamado "ari.txt" com o seguinte conteúdo (este texto será usado em todos os exemplos abaixo):
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.
Nesse caso, o programa deve imprimir:
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.
...
O programa deve calcular e imprimir o número de carateres, palavras e frases do texto. As frases podem terminar com um ponto final, um ponto de exclamação ou um ponto de interrogação. Os espaços em branco separam as palavras de uma frase. Ao contar o número de carateres por palavra, conta todos os carateres que não sejam espaços, incluindo os sinais de pontuação. Imprime as estatísticas depois da pré-visualização do texto, separadas por uma linha vazia.
Eis um exemplo de saída apenas para a parte das estatísticas do texto:
Words: 34
Sentences: 5
Characters: 186
Com estes dados sobre o texto, podemos calcular o seu nível de complexidade com a seguinte fórmula:
score = 4.71 * chars / words + 0.5 * words / sentences - 21.43
O programa deve calcular e imprimir a pontuação e a idade aproximada necessária para compreender o texto.
| Pontuação | Idade | Nível escolar |
|---|---|---|
| 1 | 5-6 | Jardim de infância |
| 2 | 6-7 | Primeiro ano |
| 3 | 7-8 | Segundo ano |
| 4 | 8-9 | Terceiro ano |
| 5 | 9-10 | Quarto ano |
| 6 | 10-11 | Quinto ano |
| 7 | 11-12 | Sexto ano |
| 8 | 12-13 | Sétimo ano |
| 9 | 13-14 | Oitavo ano |
| 10 | 14-15 | Nono ano |
| 11 | 15-16 | Décimo ano |
| 12 | 16-17 | Décimo primeiro ano |
| 13 | 17-18 | Décimo segundo ano |
| 14 | 18-22 | Estudante universitário |
A pontuação deve ser impressa com dois algarismos depois do ponto decimal. Quando é usada para determinar a idade ou o nível escolar, a pontuação deve ser arredondada para o número inteiro mais próximo e limitada a 14. Abaixo está um exemplo de saída do programa:
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.
Inscreve-te no Exercism para aprenderes e dominares AWK com 3 conceitos92 exercícios, e mentoria humana real, tudo grátis.