ধরুন আমাদের nটি ভিন্ন ইংরেজি অক্ষরের একটি অ্যারে আছে। আমাদের আরেকটি মান k আছে। আমরা kটি ভিন্ন ইন্ডেক্স (১-ইন্ডেক্সড) ইউনিফর্ম ডিস্ট্রিবিউশন দিয়ে সিলেক্ট করতে পারি। আমাদের বের করতে হবে প্রোবাবিলিটি যে সিলেক্ট করা k ইন্ডেক্সের মধ্যে কমপক্ষে একটি হবে যাতে অক্ষর 'a' থাকে।
উদাহরণস্বরূপ, যদি ইনপুট letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'] এবং k = 2 হয়, তবে আউটপুট হবে 64.28%। ২৮টি কম্বিনেশন আছে কিন্তু उनमेसे ১৮টি পেয়ার 'a' ধারণ করে, তাই 18/28 = 0.6428।
সমাধানের ধাপসমূহ
contain := 0total := 0letters-এরkএলিমেন্টের প্রতিটি কম্বিনেশনcএর জন্য:- যদি
"a"c-তে থাকে, তবেcontain := contain + 1 total := total + 1
- যদি
contain/totalরিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:
from itertools import combinations
def solve(letters, k):
contain = 0
total = 0
for c in combinations(letters, k):
if "a" in c:
contain += 1
total += 1
return contain/total
letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z']
k = 2
print(solve(letters, k))
ইনপুট
['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'], 2
আউটপুট
0.6428571428571429