Ahogy felnövünk, egyre összetettebb szövegeket is megértünk. De hogyan állapítható meg egy adott szöveg összetettségének szintje, és hogyan írhatunk olyan programokat, amelyek ezt elvégzik? Ebben a feladatban olyan programot írsz, amely meghatározza, mennyire nehéz elolvasni egy szöveget, és milyen életkornak felel meg leginkább.
A szöveg összetettségének kiszámításához az Automated readability index (ARI) képletet használjuk. Az ARI-t 1967-ben dolgozták ki, hogy felmérjék, milyen amerikai iskolai évfolyam szükséges egy szöveg elolvasásához. Ezt a szavak és a mondatok összetettségének mérésével teszi. Az összetettséget a szavankénti karakterek és a mondatonkénti szavak számával méri. A nagyobb érték nagyobb összetettséget jelent.
A programnak a szöveg első három mondatát kell megjelenítenie, de mondatonként legfeljebb 50 karaktert. Ha egy mondat meghaladja az 50 karaktert, csak az első 50 karaktert írd ki, utána pedig egy három pontot (...). Ha a szöveg háromnál több mondatot tartalmaz, negyedik sorként csak egy három pontot írj ki.
Tegyük fel, hogy van egy „ari.txt” nevű fájl a következő tartalommal (ezt a szöveget használjuk az összes alábbi példához):
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.
Ekkor a programnak ezt kell kiírnia:
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.
...
A programnak ki kell számítania és ki kell írnia a szöveg karaktereinek, szavainak és mondatainak számát. A mondatok ponttal, felkiáltójellel vagy kérdőjellel végződhetnek. A szavakat a mondatban szóközök választják el. Amikor a szavankénti karakterek számát megszámolod, minden nem üres karaktert számolj bele, az írásjeleket is. A statisztikákat a szöveg előnézete után írd ki, egy üres sorral elválasztva.
Íme egy példa kimenet, csak a szövegstatisztika részhez:
Words: 34
Sentences: 5
Characters: 186
A szövegről szerzett adatok birtokában a következő képlettel számíthatjuk ki az összetettségének szintjét:
score = 4.71 * chars / words + 0.5 * words / sentences - 21.43
A programnak ki kell számítania és ki kell írnia a pontszámot és a szöveg megértéséhez szükséges hozzávetőleges életkort.
| Pontszám | Életkor | Iskolai évfolyam |
|---|---|---|
| 1 | 5-6 | Óvoda |
| 2 | 6-7 | Első osztály |
| 3 | 7-8 | Második osztály |
| 4 | 8-9 | Harmadik osztály |
| 5 | 9-10 | Negyedik osztály |
| 6 | 10-11 | Ötödik osztály |
| 7 | 11-12 | Hatodik osztály |
| 8 | 12-13 | Hetedik osztály |
| 9 | 13-14 | Nyolcadik osztály |
| 10 | 14-15 | Kilencedik osztály |
| 11 | 15-16 | Tizedik osztály |
| 12 | 16-17 | Tizenegyedik osztály |
| 13 | 17-18 | Tizenkettedik osztály |
| 14 | 18-22 | Egyetemista |
A pontszámot két tizedesjegy pontossággal kell kiírni. Amikor az életkor vagy az iskolai évfolyam meghatározásához használjuk, a pontszámot a legközelebbi egész számra kell kerekíteni, és legfeljebb 14 lehet. Íme egy példa a program kimenetére:
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.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) AWK nyelvet 3 fogalom92 feladat segítségével, valódi emberi mentorálással, mindez ingyen.