A medida que crecemos, podemos entender textos cada vez más complejos. Pero ¿cómo se evalúa el nivel de complejidad de un texto determinado y cómo podemos crear programas que lo hagan? En este ejercicio vas a escribir un programa que determine lo difícil que es leer un texto y para qué edad es más adecuado.
Usaremos la fórmula del índice de legibilidad automatizado (ARI) para calcular la complejidad de un texto. El ARI se desarrolló en 1967 para evaluar el curso escolar estadounidense necesario para leer un fragmento de texto. Lo hace midiendo la complejidad de las palabras y las oraciones. La complejidad se mide como caracteres por palabra y palabras por oración. Un valor más alto indica mayor complejidad.
Tu programa debe mostrar las tres primeras oraciones del texto, pero no más de 50 caracteres por oración.
Si alguna oración supera los 50 caracteres, imprime solo los primeros 50 caracteres seguidos de puntos suspensivos (...).
Si el texto contiene más de tres oraciones, imprime solo puntos suspensivos como cuarta línea.
Supongamos que hay un archivo llamado «ari.txt» con el siguiente contenido (este texto se usará en todos los ejemplos siguientes):
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.
Entonces el programa debe 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.
...
El programa debe calcular e imprimir el número de caracteres, palabras y oraciones del texto. Las oraciones pueden terminar en punto, signo de exclamación o signo de interrogación. Los espacios en blanco separan las palabras dentro de una oración. Al contar el número de caracteres por palabra, cuenta todos los caracteres que no sean espacios en blanco, incluidos los signos de puntuación. Imprime las estadísticas después de la vista previa del texto, separadas por una línea vacía.
Aquí tienes un ejemplo de salida solo para la parte de las estadísticas del texto:
Words: 34
Sentences: 5
Characters: 186
Con estos datos sobre el texto, podemos calcular su nivel de complejidad con la siguiente fórmula:
score = 4.71 * chars / words + 0.5 * words / sentences - 21.43
El programa debe calcular e imprimir la puntuación y la edad aproximada necesaria para comprender el texto.
| Puntuación | Edad | Nivel educativo |
|---|---|---|
| 1 | 5-6 | Educación Infantil |
| 2 | 6-7 | 1.º de Primaria |
| 3 | 7-8 | 2.º de Primaria |
| 4 | 8-9 | 3.º de Primaria |
| 5 | 9-10 | 4.º de Primaria |
| 6 | 10-11 | 5.º de Primaria |
| 7 | 11-12 | 6.º de Primaria |
| 8 | 12-13 | 1.º de ESO |
| 9 | 13-14 | 2.º de ESO |
| 10 | 14-15 | 3.º de ESO |
| 11 | 15-16 | 4.º de ESO |
| 12 | 16-17 | 1.º de Bachillerato |
| 13 | 17-18 | 2.º de Bachillerato |
| 14 | 18-22 | Estudiante universitario |
La puntuación debe imprimirse con dos dígitos significativos después de la coma decimal. Al usarla para hallar la edad o el nivel educativo, la puntuación debe redondearse al número entero más cercano y limitarse a 14. A continuación tienes un ejemplo de salida del 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.
Regístrate en Exercism para aprender y dominar AWK con 3 conceptos92 ejercicios y mentoría humana real, todo gratis.