কিন্ডারগার্টেনের ক্লাসে শিশুরা গাছ জন্মানো সম্পর্কে শিখছে। শিক্ষক ভাবলেন, মাটিতে লাগিয়ে গাছ বড় করার জন্য ক্লাসের শিশুদের বীজ দিলে ভালো হবে। এই উদ্দেশ্যে শিশুরা জানালার সিল বরাবর ছোট ছোট কাপ রেখেছে এবং প্রতিটি কাপে এক ধরনের গাছ লাগিয়েছে। চার ধরনের বীজের মধ্যে থেকে শিশুরা নিজেদের পছন্দেরটি বেছে নিতে পেরেছে: grass, clover, radishes, and violets.
আপনার কাজ হলো, একটি ডায়াগ্রাম দেখে নির্ধারণ করা কিন্ডারগার্টেন ক্লাসের প্রতিটি শিশু কোন গাছের দায়িত্বে আছে।
ক্লাসে ১২ জন শিশু আছে:
চার ধরনের বীজ রোপণ করা হয়:
| গাছ | ডায়াগ্রামে এনকোডিং |
|---|---|
| Grass | G |
| Clover | C |
| Radish | R |
| Violet | V |
প্রতিটি শিশু চারটি কাপ পায়, প্রতি সারিতে দুটি:
[window][window][window]
........................ # each dot represents a cup
........................
তাদের শিক্ষক শিশুদের নামের বর্ণানুক্রমে কাপ বরাদ্দ করেন, অর্থাৎ Alice প্রথমে এবং Larry সবার শেষে আসে।
Alice-এর গাছগুলো দেখানো একটি উদাহরণ ডায়াগ্রাম এখানে:
[window][window][window]
VR......................
RG......................
প্রথম সারিতে, জানালার সবচেয়ে কাছে, তার একটি violet ও একটি radish আছে। দ্বিতীয় সারিতে তার একটি radish ও কিছু grass আছে।
আপনার প্রোগ্রামকে জানালার সবচেয়ে কাছের সারি থেকে শুরু করে বাম থেকে ডানে গাছগুলো দেওয়া হবে। এটি থেকে, কোন গাছ কোন শিক্ষার্থীর তা নির্ধারণ করতে পারবে।
উদাহরণস্বরূপ, যদি বলা হয় বাগানটি এমন দেখতে:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
তাহলে Alice-এর গাছ চাওয়া হলে, এটি দেবে:
আর Bob-এর গাছ চাইলে পাওয়া যাবে:
এই অনুশীলনীতে আপনাকে এমন একটি ক্লাস লিখতে হবে, যা কিন্ডারগার্টেনের প্রতিটি শিশুর জন্য একটি করে মেথড দেয়।
আপনি যদি নিজে নিজে ১২টি আলাদা মেথড ডিফাইন করার বদলে একটু মেটাপ্রোগ্রামিং ব্যবহার করেন, তাহলে আপনার কাজ কম পুনরাবৃত্তিমূলক (এবং আরও মজার!) হয়ে উঠবে।
কোথা থেকে শুরু করবেন তা নিশ্চিত না হলে method_missing বা define_method মেথডগুলো একটু ঘেঁটে দেখুন।
Exercism-এ সাইন আপ করুন, Ruby ট্র্যাকের 21টি কনসেপ্ট121টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।