هرچه بزرگتر میشویم، میتوانیم متنهای پیچیدهتری را بفهمیم. اما سطح پیچیدگی یک متن مشخص چگونه سنجیده میشود و چطور میتوانیم برنامههایی بنویسیم که این کار را انجام دهند؟ در این تمرین، برنامهای مینویسید که تعیین میکند خواندن یک متن چقدر دشوار است و برای چه سنی مناسبتر است.
برای محاسبهی پیچیدگی متن از فرمول شاخص خودکار خوانایی (ARI) استفاده میکنیم. این شاخص در سال ۱۹۶۷ برای سنجش پایهی تحصیلی لازم در آمریکا برای خواندن یک متن ساخته شد. این کار را با اندازهگیری پیچیدگی واژهها و جملهها انجام میدهد. پیچیدگی بر حسب تعداد نویسه در هر واژه و تعداد واژه در هر جمله سنجیده میشود. هرچه این مقدار بیشتر باشد، متن پیچیدهتر است.
برنامهی شما باید سه جملهی اول متن را نمایش دهد، اما برای هر جمله حداکثر ۵۰ نویسه.
اگر جملهای بیش از ۵۰ نویسه باشد، فقط ۵۰ نویسهی اول را چاپ کنید و در ادامه یک سهنقطه (...) بیاورید.
اگر متن بیش از سه جمله داشته باشد، به عنوان خط چهارم فقط یک سهنقطه چاپ کنید.
فرض کنید فایلی با اسم ari.txt با محتوای زیر وجود دارد (این متن در همهی مثالهای زیر استفاده میشود):
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.
سپس برنامه باید چاپ کند:
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 = 4.71 * chars / words + 0.5 * words / sentences - 21.43
برنامه باید نمره و سن تقریبی لازم برای درک متن را محاسبه و چاپ کند.
| نمره | سن | پایهی تحصیلی |
|---|---|---|
| ۱ | ۵-۶ | مهدکودک |
| ۲ | ۶-۷ | کلاس اول |
| ۳ | ۷-۸ | کلاس دوم |
| ۴ | ۸-۹ | کلاس سوم |
| ۵ | ۹-۱۰ | کلاس چهارم |
| ۶ | ۱۰-۱۱ | کلاس پنجم |
| ۷ | ۱۱-۱۲ | کلاس ششم |
| ۸ | ۱۲-۱۳ | کلاس هفتم |
| ۹ | ۱۳-۱۴ | کلاس هشتم |
| ۱۰ | ۱۴-۱۵ | کلاس نهم |
| ۱۱ | ۱۵-۱۶ | کلاس دهم |
| ۱۲ | ۱۶-۱۷ | کلاس یازدهم |
| ۱۳ | ۱۷-۱۸ | کلاس دوازدهم |
| ۱۴ | ۱۸-۲۲ | دانشجو |
نمره باید با دو رقم اعشار چاپ شود. وقتی از نمره برای یافتن سن یا پایهی تحصیلی استفاده میشود، باید به نزدیکترین عدد صحیح گرد شود و حداکثر ۱۴ در نظر گرفته شود. در زیر نمونهای از خروجی برنامه آمده است:
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.