হাত বেঁধে র্যান্ডম দ্বারা অনুপ্রাণিত :
লক্ষ
এই চ্যালেঞ্জের লক্ষ্য হ'ল একটি প্রোগ্রাম লিখুন যা সিউডোরেন্ডম বিট স্ট্রিম তৈরি করে যা 1s এবং 0 এর স্ট্রিং যা খাঁটি এলোমেলো বলে মনে হয় তবে এটি একটি নির্মাতামূলক উপায়ে উত্পন্ন হয়। আপনার প্রোগ্রামের 1 এবং 0 এর স্ট্রিং আউটপুট করা উচিত (whচ্ছিক সাদা স্থান সহ) এবং নিম্নলিখিত প্রয়োজনীয়তাগুলি পাস করতে হবে:
- সীমাহীন সময় এবং মেমরি দেওয়া, আপনার প্রোগ্রাম অবশ্যই 1s এবং 0 এর স্ট্রিং চিরতরে চালিয়ে যেতে হবে
- আপনার প্রোগ্রামটি প্রায় এক মিনিটের মধ্যে 1000 টিরও বেশি এলোমেলো বিট যুক্তিসঙ্গত মেশিনে আউটপুট দিতে হবে। যদি এই প্রয়োজনীয়তা অসম্ভব, তবে আমি এটি কমিয়ে দেব।
- বিটের স্ট্রিং পুনরাবৃত্তি করতে পারে তবে পুনরাবৃত্তি বিভাগের দৈর্ঘ্য অবশ্যই 1000 বিটের বেশি হওয়া উচিত।
- বিটের স্ট্রিং অবশ্যই যথাসম্ভব এলোমেলো পরীক্ষার (নীচে বর্ণিত) পাস করতে হবে।
- প্রোগ্রামটি অবশ্যই কোনও বাহ্যিক উত্স থেকে কোনও ইনপুট নেবে না বা কোনও বিল্ট-ইন র্যান্ড () - এর মতো ফাংশন ব্যবহার করবে না।
- উপরের প্রয়োজনের কারণে, প্রোগ্রামটি প্রতিবার চালিত হওয়ার সময় বিটগুলির একই সঠিক স্ট্রিং আউটপুট করতে হবে।
র্যান্ডমনেস টেস্ট # 1
সিউডোর্যান্ডম বিটের স্ট্রিংটিতে ভিজ্যুয়াল ইন্সপেকশন করার সময় কোনও সুস্পষ্ট নিদর্শন অন্তর্ভুক্ত করা উচিত নয়।
র্যান্ডমনেস টেস্ট # 2 (মন্তব্যের ভিত্তিতে পরিবর্তনের সাপেক্ষে)
বিটের স্ট্রিংয়ে অবশ্যই 1s এবং 0 এর সমান বন্টন থাকতে হবে। এটি পরীক্ষা করার জন্য (এবং অন্যান্য জিনিসগুলিও), বিটের প্রবাহটি 3 বিট লম্বা অংশগুলিতে বিভক্ত হয় 101|111|001
।
এই সমস্ত বিভাগের মধ্যে, তাদের মধ্যে ১/৮ এর তিনটি 1s এবং 0s হওয়া উচিত, তাদের মধ্যে 3/8 এর দুটি 1s এবং একটি 0, 3/8 হওয়া উচিত একটি 1 এবং দুটি 0, এবং 1/8 তাদের মধ্যে কোনও 1s এবং তিনটি 0 টি হওয়া উচিত।
র্যান্ডমনেস টেস্ট # 3
একটি "রান" বিটগুলির ক্রমাগত সিরিজ হিসাবে সংজ্ঞায়িত করা হয় যা সবার সমান মান থাকে। স্ট্রিংয়ের 1001001110
আকার 1 ( 1..1.....0
) এর তিন রান, আকার 2 ( ) এর দুটি রান এবং আকার 3 ( .00.00....
) এর একটি রান রয়েছে ......111.
। লক্ষ্য করুন যে রানগুলি ওভারল্যাপ হয় না।
১০০০ এলোমেলো বিটের স্ট্রিংয়ের মধ্যে, আকারের প্রায় 250 রান, আকার 2 এর 125 রান, আকার 3 এর 62 রান, ইত্যাদি হওয়া উচিত run র রান সাইজের জন্য 1000/(2**(R+1))
, সেই আকারের প্রায় রান থাকতে হবে ।
র্যান্ডমনেস টেস্ট # 4
প্রথম 840 বিটগুলি প্রতিটি 420 বিটের দুটি অংশে বিভক্ত। প্রথমার্ধের প্রতিটি বিট দ্বিতীয় অর্ধের সংশ্লিষ্ট বিটের সাথে তুলনা করা হয়। দুটি বিট সময় পঞ্চাশ শতাংশ মেলা উচিত।
এখানে পার্ল প্রোগ্রামের উত্স কোড যা 2 থেকে 4 পরীক্ষা করে now এখনকার মতো, এটিতে প্রয়োজন যে বিটগুলির স্ট্রিংটিতে কোনও শ্বেত স্থান না থাকে।
উদ্দেশ্য বিজয়ী মানদণ্ড সময়!
বিজয়ী হ'ল এমন প্রোগ্রাম যা requirements টি প্রয়োজনীয়তা এবং সমস্ত এলোমেলোভাবে সমস্ত পরীক্ষার ডিগ্রিতে পাস করে যা এলোমেলো থেকে আলাদা নয়। যদি একাধিক প্রোগ্রাম এটি সম্পাদন করে, তবে যেটির পুনরাবৃত্তি করতে সবচেয়ে বেশি সময় লাগে সে জিতবে। যদি একাধিক প্রোগ্রাম এটি সম্পাদন করে তবে টাই-ব্রেকার হিসাবে কাজ করার জন্য আমাকে আরও র্যান্ডমনেস টেস্টগুলি পেতে হতে পারে।