जैसे-जैसे हम बड़े होते हैं, हम और ज़्यादा जटिल टेक्स्ट समझ पाते हैं। लेकिन किसी दिए गए टेक्स्ट की जटिलता का स्तर कैसे आँका जाता है, और हम ऐसे प्रोग्राम कैसे बना सकते हैं जो यह काम करें? इस अभ्यास में आप एक ऐसा प्रोग्राम लिखेंगे जो बताएगा कि कोई टेक्स्ट पढ़ने में कितना कठिन है और वह किस उम्र के लिए सबसे उपयुक्त है।
टेक्स्ट की जटिलता निकालने के लिए हम स्वचालित पठनीयता सूचकांक (ARI) सूत्र का उपयोग करेंगे। 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
प्रोग्राम को स्कोर निकालकर छापना चाहिए और यह भी बताना चाहिए कि टेक्स्ट को समझने के लिए लगभग कितनी उम्र ज़रूरी है।
| स्कोर | उम्र | ग्रेड लेवल |
|---|---|---|
| 1 | 5-6 | Kindergarten |
| 2 | 6-7 | First Grade |
| 3 | 7-8 | Second Grade |
| 4 | 8-9 | Third Grade |
| 5 | 9-10 | Fourth Grade |
| 6 | 10-11 | Fifth Grade |
| 7 | 11-12 | Sixth Grade |
| 8 | 12-13 | Seventh Grade |
| 9 | 13-14 | Eighth Grade |
| 10 | 14-15 | Ninth Grade |
| 11 | 15-16 | Tenth Grade |
| 12 | 16-17 | Eleventh Grade |
| 13 | 17-18 | Twelfth Grade |
| 14 | 18-22 | College student |
स्कोर को दशमलव बिंदु के बाद दो सार्थक अंकों के साथ छापना चाहिए। जब स्कोर का उपयोग उम्र या ग्रेड लेवल निकालने के लिए किया जाए, तो उसे निकटतम पूर्ण संख्या तक पूर्णांकित करना चाहिए और 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 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।