এক সন্ধ্যায় হঠাৎ আপনার হাতে পড়ে গেল একটি পুরোনো নোটবুক, রহস্যময় আঁকিবুঁকিতে ভরা, যেন কেউ এক নেশায় কোনো একটি ভাবনার পেছনে ছুটে চলছিল। একটি পাতায় স্পষ্ট হয়ে উঠল একটি প্রশ্ন: প্রতিটি সংখ্যা কি নিজের পথ খুঁজে ১-এ পৌঁছাতে পারে? প্রশ্নটি জড়িয়ে ছিল কোলাটজ অনুমান নামের একটি ধাঁধার সঙ্গে, যা কয়েক দশক ধরে চিন্তাবিদদের হতবাক করে রেখেছে।
নিয়মগুলো ছিল আপাতদৃষ্টিতে সহজ। যেকোনো একটি ধনাত্মক ইন্টিজার বেছে নিন।
এরপর ফলাফলটি নিয়ে একই ধাপগুলো আবার করুন, এভাবে অনির্দিষ্টকাল চলতে থাকুক।
কৌতূহলী হয়ে আপনি পরীক্ষা করার জন্য ১২ নম্বরটি বেছে নিয়ে যাত্রা শুরু করলেন:
১২ ➜ ৬ ➜ ৩ ➜ ১০ ➜ ৫ ➜ ১৬ ➜ ৮ ➜ ৪ ➜ ২ ➜ ১
দ্বিতীয় সংখ্যা (৬) থেকে গুনতে শুরু করলে ১-এ পৌঁছাতে লেগেছিল ৯টি ধাপ, আর নিয়মগুলো প্রতিবার পুনরাবৃত্তি হওয়ার সঙ্গে সঙ্গে সংখ্যাটি বদলাতেই থাকল। শুরুতে ক্রমটি অনুমানযোগ্য মনে হচ্ছিল না, এদিক-ওদিক, ওপর-নিচ, সর্বত্র লাফিয়ে চলছিল। তবুও অনুমানটি দাবি করে, শুরুর সংখ্যা যা-ই হোক, শেষে আমরা সবসময় ১-এ পৌঁছাব।
এটা ছিল মুগ্ধকর, আবার একইসঙ্গে রহস্যজনক। কেন এটা সবসময় কাজ করে বলে মনে হয়? হতে পারে এমন কোনো সংখ্যা আছে, যেখানে প্রক্রিয়াটি ভেঙে পড়ে, চিরকালের জন্য লুপ করে ঘোরে, বা অসীমের দিকে পালিয়ে যায়? নোটবুকটি ইঙ্গিত দিচ্ছিল, এটি সমাধান করলে হয়তো গভীর কোনো কিছু প্রকাশ পাবে, আর এর রহস্য উন্মোচন করতে পারলেই আপনার জন্য অপেক্ষা করছে খ্যাতি, ভাগ্য আর ইতিহাসে এক স্থান।
একটি ধনাত্মক ইন্টিজার দেওয়া হলে, Collatz Conjecture-এর নিয়ম অনুসারে 1-এ পৌঁছাতে যতগুলো ধাপ লাগে, সেই সংখ্যাটি রিটার্ন করুন।
এই অনুশীলনীর জন্য আপনাকে একটি এরর সেট ComputationError যোগ করতে হবে, যাতে IllegalArgument এররটি থাকবে।
এটি public করতে ভুলবেন না!
ইনপুট শূন্যের সমান হলে steps ফাংশনটিকে অবশ্যই ComputationError.IllegalArgument রিটার্ন করতে হবে।
পরের অনুশীলনীগুলোতে সাধারণত এ ধরনের স্পষ্ট নির্দেশনা থাকবে না। সাধারণভাবে, সমাধান লেখার সময় Exercism আশা করে আপনি টেস্ট ফাইলটি পড়বেন।
Zig-এ এরর সম্পর্কে আরও বিস্তারিত জানতে দেখুন:
Exercism-এ সাইন আপ করুন, Zig ট্র্যাকের 104টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।