রোবটের নাম

রোবটের নাম

মধ্যম

নির্দেশনা

রোবট ফ্যাক্টরির সেটিংস পরিচালনা করুন।

ফ্যাক্টরি ফ্লোর থেকে বেরোনোর সময় রোবটের কোনো নাম থাকে না।

আপনি যখন প্রথমবার একটি রোবট চালু করেন, তখন দুইটি বড় হাতের অক্ষরের পর তিনটি সংখ্যা, এই ফরম্যাটে একটি এলোমেলো নাম তৈরি হয়, যেমন RX837 বা BC811।

মাঝে মাঝে আমাদের একটি রোবটকে তার ফ্যাক্টরি সেটিংসে রিসেট করতে হয়, অর্থাৎ তার নাম মুছে যায়। পরেরবার আপনি জিজ্ঞাসা করলে ওই রোবট নতুন একটি এলোমেলো নাম জানাবে।

নামগুলো এলোমেলো হতে হবে: সেগুলো এমন কোনো ক্রম অনুসরণ করবে না যা আগে থেকে আন্দাজ করা যায়। এলোমেলো নাম ব্যবহারের মানে হলো কোলিশনের ঝুঁকি। আপনার সমাধানকে নিশ্চিত করতে হবে যে প্রতিটি বিদ্যমান রোবটের নাম অনন্য।

টেস্ট স্যুটটি ডিফল্টভাবে কেবল ~১০০টি নাম জেনারেট করে। বৈধ নাম রয়েছে ~৭ লক্ষ, তাই সংঘর্ষ হওয়ার সম্ভাবনা সামান্যই থাকে। টেস্ট স্যুটের পাশাপাশি অন্য কোনো উপায়েও আপনার সমাধানে সংঘর্ষ আছে কি না তা পরীক্ষা করার কথা ভাবতে পারেন।

এই অনুশীলনী Julia-এর টাইপ সিস্টেম নিয়ে আমাদের অনুসন্ধান চালিয়ে যায়, এবার মিউটেবল টাইপ নিয়ে, আর আমাদের পরিচয় করিয়ে দেয় র‍্যান্ডম নাম্বার জেনারেশন-এর সাথে।

আমরা কল্পনা করি, রোবটকে ফ্যাক্টরি সেটিংসে রিসেট করা যেন এক ধরনের অস্ত্রোপচার: এতে বিষয়টির মধ্যে পরিবর্তন আসে, তবে বিষয়টিকে প্রতিস্থাপন করা হয় না। আমরা সমস্যাটি এমনভাবেও মডেল করতে পারতাম যাতে একটি রোবট রিসেট করলে নতুন একটি রোবট তৈরি হয়, কিন্তু সব সমস্যাই কেবল ইমিউটেবল ডেটা স্ট্রাকচার দিয়ে মডেল করা যায় না (এমনকি বিশুদ্ধ ফাংশনাল ভাষাগুলোকেও তাদের রানটাইমের ভেতরে মিউটেবিলিটি সামলাতে হয়!)।

Julia-তে, যে ফাংশনগুলো তাদের আর্গুমেন্ট মিউটেট করে, প্রথা অনুযায়ী সেগুলোর নামের শেষে ! থাকে। তাই এটি করার জন্য আমাদের মেথডটির নাম হবে reset!.

এটি কেবল একটি প্রথা, তবে প্রকাশিত প্রায় সব Julia কোডই এটি অনুসরণ করে, আর আপনি নিজেও হয়তো একমত হবেন যে এটি বেশ সহায়ক!

ইঙ্গিত

আপনাকে ডিফাইন করতে হবে ইউনিক নাম জেনারেট করার একটি মেথড, রোবট বর্ণনা করার একটি স্ট্রাকচার, রোবট রিসেট করার একটি মেথড, আর রোবটের নাম পাওয়ার একটি মেথড।

আপনার প্রোগ্রামটি প্রথমে এমনভাবে ডিজাইন করা সহায়ক হতে পারে, যেখানে কেবল একটি রোবটের জন্য একটি র‍্যান্ডম নাম তৈরি হবে (সংঘর্ষ নিয়ে চিন্তা না করেই), আর পরে ভেবে দেখা ও এমন একটি স্কিম ডিজাইন করা, যা কখনোই ডুপ্লিকেট নাম দেবে না। আপনার ডিজাইনে খেয়াল রাখুন, নাম ফুরিয়ে যাওয়ার সাথে সাথে নাম জেনারেশনের রান টাইম কীভাবে বদলায়। কলারকে আপনি কী নিশ্চয়তা দিতে চান?


সূত্র

gSchool-এ Paul Blackwell-এর সঙ্গে একটি ডিবাগিং সেশন।
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Julia Exercism

রোবটের নাম শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Julia ট্র্যাকের 35টি কনসেপ্ট128টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।