বিচ্ছিন্ন সম্ভাবনা বন্টনের ধারণার সাথে লোকদের পরিচয় করানোর একটি সর্বোত্তম উদাহরণ হ'ল বিন মেশিন । এই মেশিনটির শীর্ষে একটি সরু প্যাসেজওয়ে থেকে প্রচুর পরিমাণে মার্বেল পড়েছে, তারপরে তারা সারি সারি আন্তঃবিরাম পিনগুলি আঘাত করে, যেখানে প্রতিটি পিনে মার্বেলটি আঘাত করে এটি পিনের বাম বা ডানদিকে পড়ে যেতে পারে। অবশেষে, পিনগুলি মেশিনের নীচে উল্লম্ব বিনগুলিতে সংগ্রহ করা হয়। এই মেশিনের একটি সাধারণ চিত্রটি দেখতে এরকম দেখাচ্ছে:
| O |
| ^ |
| ^ ^ |
| ^ ^ ^ |
| ^ ^ ^ ^ |
| ^ ^ ^ ^ ^ |
|_|_|_|_|_|_|
এই চিত্রটিতে, O
মার্বেলগুলি যে স্থান থেকে পড়েছে তার অবস্থানটি নির্দেশ করে। প্রত্যেকটি ^
একটি পিন যেখানে মার্বেলটির বামে বা পিনের ডানদিকে স্কোয়ারে যাওয়ার 50% সুযোগ রয়েছে। তারপরে মার্বেলগুলি ডিভাইসের নীচে বাঁধাগুলিতে জড়ো হয় এবং প্রচুর পরিমাণে মার্বেলের জন্য, ডাবের মধ্যে মার্বেলের স্ট্যাকের উচ্চতা একটি বিচ্ছিন্ন দ্বিপদী বন্টনের অনুরূপ।
চ্যালেঞ্জ
এই চ্যালেঞ্জের জন্য, আপনি উপরের মতো ডায়াগ্রামের উপর ভিত্তি করে শিম মেশিনগুলির ফলস্বরূপ সম্ভাব্যতা বিতরণ গণনা করবেন। চিত্রগুলি দ্বি-মাত্রিক 'প্রোগ্রাম' হিসাবে ব্যাখ্যা করা হয় যা মার্বেলগুলি পাশের ক্ষেত্রগুলিতে বা বর্তমান ক্ষেত্রের নীচে ক্ষেত্রগুলির মধ্য দিয়ে যায়। মার্বেলগুলি মেশিনের নীচে পৌঁছলে তারা সম্ভাবনা বন্টনের জন্য গণনা করা হয়। এটিকে আকর্ষণীয় রাখার জন্য, এই চিত্রগুলিতে কেবল সাধারণ উত্স এবং পিনগুলি ছাড়াও আরও কয়েকটি ক্ষেত্র থাকবে। উদাহরণ চিত্রটি হ'ল:
| O |
| ^ |
| ^ / |
| ^ | ^ |
| <^- = v |
| ^ ^ ^ ^ ^ |
তদতিরিক্ত, এখন মার্বেলগুলির প্রত্যেকের একটি ঘূর্ণন দিক রয়েছে। এই দিকটি কয়েকটি ক্ষেত্র দ্বারা সেট করা হয়েছে এবং এটি নির্ধারণ করে যে পরবর্তী ক্ষেত্রটি মার্বেলটি অন্য কয়েকটি ক্ষেত্রে চলে।
নিম্নলিখিত ক্ষেত্রগুলি সংজ্ঞায়িত করা হয়েছে:
O
: সূত্র. স্প্যানস মার্বেলগুলি এর সরাসরি নীচে। এই মার্বেলের দিকটি 50% বাম, 50% ডান। প্রতিটি উত্স একই পরিমাণে মার্বেল উত্পাদন করে।U
: ডুবুন এই ক্ষেত্রের মধ্যে প্রবেশ করা কোনও মার্বেল বিন মেশিন থেকে সরানো হবে।: শুন্যস্থান. যদি কোনও মার্বেল এই ক্ষেত্রটিতে আসে তবে এটি নীচের মাঠে চলে যাবে।
-
: তল। যদি কোনও মার্বেল এই ক্ষেত্রটিতে আসে তবে এটি বর্তমান দিকের উপর নির্ভর করে বাম দিকে ক্ষেত্র বা ডানদিকে ক্ষেত্রের দিকে চলে যাবে।^
: বিভক্ত। যদি কোনও মার্বেল এই ক্ষেত্রটিতে আসে তবে এর একটি 50% ডানদিকে বা স্প্লিটারের বাম দিকে ক্ষেত্রের দিকে সরবে। এটি মার্বেলের দিকও নির্ধারণ করে।v
: যোগ দিন। যদি কোনও মার্বেল এই ক্ষেত্রটিতে আসে তবে এটি নীচের মাঠে চলে যাবে।/
: স্ল্যাটেড প্যাড যদি কোনও মার্বেল এই ক্ষেত্রটিতে আসে তবে এটি মার্বেলের দিক নির্ধারণ করে প্যাডের বাম দিকে মাঠে চলে যাবে।\
: আগের মত একই, তবে ডানদিকে।|
: প্রতিফলক। যদি কোনও মার্বেল এই ক্ষেত্রটিতে আসে তবে এটি মার্বেলের দিকটিকে বিপরীত করবে এবং মার্বেলটিকে এই বিপরীত দিকের ভিত্তিতে ডান বা বাম দিকে ক্ষেত্রের দিকে নিয়ে যাবে।=
: কামান। একটি মার্বেল এই ক্ষেত্রে আসে, তাহলে এটি, ডান অথবা বর্তমান দিক থেকে বামে এটিকে সরান পর্যন্ত মার্বেল একটি ক্ষেত্র নয় encounters হবে,
-
বাO
।<
: পূর্বের মতো একই, তবে সর্বদা দিকনির্ধারণ এবং বাম দিকে অগ্রসর হবে।>
: আগের মত একই, তবে ডানদিকে।
ডায়াগ্রাম সম্পর্কিত নিম্নলিখিত গ্যারান্টি দেওয়া হয়।
- প্রতিটি ইনপুট সারিতে ক্ষেত্রগুলিতে ঠিক একই দৈর্ঘ্য থাকবে।
- প্রতিটি সারির বামে এবং ডানদিকের ক্ষেত্রটি সর্বদা ক
|
। - চিত্রটিতে কোনও সম্ভাব্য পথ থাকবে না যার মাধ্যমে মার্বেলগুলি অনন্তর পরিমাণে পুনরাবৃত্তির জন্য মেশিনে আটকে যেতে পারে, যেমন
\/
বা^^
। - চিত্রটিতে কেবলমাত্র উল্লিখিত ক্ষেত্রগুলি থাকবে।
- এক বা একাধিক উত্স আছে
ফল
আপনার কাজটি সম্ভাব্যতা বিতরণের একটি 16-লম্বা লম্বা ASCII বার গ্রাফ তৈরি করা হবে যাতে মার্বেলগুলি গ্রাফের নীচের দিক থেকে প্রস্থান করবে, যাতে বৃহত্তর সম্ভাবনাটি সমস্ত 16 টি অক্ষরকে কভার করে। সুতরাং নিম্নলিখিত সমস্যার জন্য:
| O |
| ^ |
| ^ ^ |
| ^ ^ ^ |
| ^ ^ ^ ^ |
| ^ ^ ^ ^ ^ |
আপনার প্রোগ্রামটির নিম্নলিখিত সমাধানগুলি উত্পন্ন করা উচিত (নোট করুন যে এটির পাশের পাইপগুলি সহ ইনপুট প্রোগ্রামের মতো একই প্রস্থের হওয়া উচিত:
# #
# #
# #
# #
# #
# #
# #
# #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # # # #
# # # # # #
উদাহরণ
নিম্নলিখিতটি একটি ক্ষেত্রের সমস্ত ধরণের কার্যকারিতা পরীক্ষা করার জন্য একটি উদাহরণ:
| O O |
| O ^ / <^\\\ |
| ^ > ^ |
| ^ ^ ^ =|
| ^ ^ | ^ <^ O |
| ^ > ^ | ^ O ^> v |
|| ^U ^ | = ^\ |
| ^ ^ ^ ^U ^\ ---^ |
| = ^ ^ = v |
এটি নিম্নলিখিত আউটপুট ফলাফল করা উচিত:
#
#
#
#
# #
# #
# #
# # # #
# # # #
# # # #
# # # #
## # # #
## # # # #
# ### # # # #
# # ### # # # #
# # ### # # # #
বিধি
উভয় ফাংশন এবং সম্পূর্ণ প্রোগ্রাম এই চ্যালেঞ্জের জন্য বৈধ উত্তর গঠন করে। আপনি একটি নিউলাইন-বিভাজিত স্ট্রিং হিসাবে ডায়াগ্রামটি পাবেন এবং আপনার প্রদত্ত বিন্যাসে আউটপুট গ্রাফটি ফিরিয়ে দেওয়া উচিত। ডিফল্ট ইনপুট / আউটপুট বিধি প্রযোজ্য। আউটপুটে ট্রেইলিং এবং শীর্ষস্থানীয় নিউলাইনগুলি অনুমোদিত হওয়ার সময়, প্রতিটি সারিটির ইনপুটের মতো ঠিক একই প্রস্থ থাকা উচিত।
আরও সৃজনশীল সমাধানের অনুমতি দেওয়ার জন্য, কেবলমাত্র আপনার প্রোগ্রামটি একই চিত্রের জন্য 90% এরও বেশি সময় ধরে সঠিক ফলাফলকে আউটপুট করা প্রয়োজন। এটি সর্বোপরি একটি সম্ভাবনা সিমুলেশন।
স্কোরিং
এটি কোড-গল্ফ , তাই বাইট জিতে সর্বনিম্ন স্কোর।
v
= [space]
?
v
এবং توپগুলি [space]
কীভাবে তাদের চারপাশে যোগাযোগ করে তার মধ্যে পৃথক dif