مع تقدمنا في العمر، نصبح قادرين على فهم نصوص أكثر تعقيدًا. لكن كيف يُقاس مستوى تعقيد نص معيّن، وكيف يمكننا كتابة برامج تفعل ذلك؟ في هذا التمرين، ستكتب برنامجًا يحدّد مدى صعوبة قراءة نص وما العمر الأنسب له.
سنستخدم صيغة مؤشر القراءة الآلي (ARI) لحساب تعقيد النص. طُوِّر مؤشر القراءة الآلي عام 1967 لتقييم المستوى الدراسي في الولايات المتحدة اللازم لقراءة قطعة من النص. وهو يفعل ذلك بقياس تعقيد الكلمات والجمل. ويُقاس التعقيد بعدد الأحرف في كل كلمة وعدد الكلمات في كل جملة. وكلما زادت القيمة زاد التعقيد.
ينبغي لبرنامجك أن يعرض الجمل الثلاث الأولى من النص، لكن بما لا يزيد على 50 حرفًا لكل جملة. وإذا تجاوزت أي جملة 50 حرفًا، فاطبع أول 50 حرفًا فقط متبوعة بعلامة حذف (...). وإذا احتوى النص على أكثر من ثلاث جمل، فأخرج علامة حذف فقط في السطر الرابع.
لنفترض وجود ملف باسم "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
ينبغي للبرنامج أن يحسب ويطبع النتيجة والعمر التقريبي اللازم لفهم النص.
| Score | Age | Grade Level |
|---|---|---|
| 1 | 5-6 | رياض الأطفال |
| 2 | 6-7 | الصف الأول |
| 3 | 7-8 | الصف الثاني |
| 4 | 8-9 | الصف الثالث |
| 5 | 9-10 | الصف الرابع |
| 6 | 10-11 | الصف الخامس |
| 7 | 11-12 | الصف السادس |
| 8 | 12-13 | الصف السابع |
| 9 | 13-14 | الصف الثامن |
| 10 | 14-15 | الصف التاسع |
| 11 | 15-16 | الصف العاشر |
| 12 | 16-17 | الصف الحادي عشر |
| 13 | 17-18 | الصف الثاني عشر |
| 14 | 18-22 | طالب جامعي |
ينبغي طباعة النتيجة برقمين معنويين بعد العلامة العشرية. وعند استخدامها لإيجاد العمر أو المستوى الدراسي، ينبغي تقريب النتيجة إلى أقرب عدد صحيح مع تحديد سقفها عند 14. فيما يلي مثال على مخرجات البرنامج:
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.
سجّل في Exercism لتتعلّم وتتقن AWK عبر 3 مفاهيم92 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.