বড় হওয়ার সাথে সাথে আমরা আরও জটিল টেক্সট বুঝতে পারি। কিন্তু কোনও একটি টেক্সটের জটিলতার মাত্রা কীভাবে নির্ণয় করা হয়, আর সেটি করার প্রোগ্রাম আমরা কীভাবে লিখতে পারি? এই অনুশীলনীতে আপনি এমন একটি প্রোগ্রাম লিখবেন, যা নির্ণয় করবে একটি টেক্সট পড়া কতটা কঠিন এবং তা কোন বয়সের জন্য সবচেয়ে উপযুক্ত।
টেক্সটের জটিলতা হিসাব করতে আমরা অটোমেটেড রিডেবিলিটি ইনডেক্স (ARI) সূত্রটি ব্যবহার করব। একটি টেক্সট পড়তে যে মার্কিন গ্রেড লেভেল দরকার তা নির্ণয় করার জন্য ১৯৬৭ সালে 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
প্রোগ্রামটি স্কোর এবং টেক্সটটি বুঝতে প্রয়োজনীয় আনুমানিক বয়স হিসাব করে প্রিন্ট করবে।
| Score | Age | Grade Level |
|---|---|---|
| 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 |
স্কোরটি দশমিক বিন্দুর পরে দুইটি উল্লেখযোগ্য অঙ্কসহ প্রিন্ট করতে হবে। বয়স বা গ্রেড লেভেল বের করার সময় স্কোরটিকে নিকটতম পূর্ণসংখ্যায় রাউন্ড করে ১৪-এ সীমাবদ্ধ রাখতে হবে। নিচে প্রোগ্রামটির একটি নমুনা আউটপুট দেওয়া হলো:
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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।