কম্পিউটার টিউটোরিয়াল

পাইথনে এক্সপ্রেশন রেজাল্টের ম্যাক্সিমাম ফ্রিকোয়েন্সির এক্সপেক্টেড ভ্যালু বের করার প্রোগ্রাম

ধরুন আমাদের Mটি ভিন্ন এক্সপ্রেশন আছে, এবং এই এক্সপ্রেশনগুলোর উত্তর ১ থেকে N (ইনক্লুসিভ) রেঞ্জে আছে। ধরুন x = max(f(i)) প্রতিটি i রেঞ্জ ১ থেকে N এর জন্য, আমাদের x-এর এক্সপেক্টেড ভ্যালু বের করতে হবে।

উদাহরণস্বরূপ, যদি ইনপুট M = 3, N = 3 হয়, তবে আউটপুট হবে 2.2 কারণ:

SequenceMaximum frequency
1113
1122
1132
1222
1231
1331
2223
2232
2332
3333

$$E(x) = \sum P(x) * x = P(1) + 2P(2) + 3P(3) = \frac{1}{10} + 2 * \frac{6}{10} + 3 * \frac{3}{10} = \frac{22}{10}$$

সমাধানের ধাপসমূহ

  • combination := {} - মেমোরাইজেশন용 맵
  • nCr() ফাংশন ডিফাইন করুন যা n, k_in নেবে
    • k := min(k_in, n - k_in)
    • বেস কেস হ্যান্ডল করুন
    • মেমোরাইজেশন ব্যবহার করে কম্বিনেশন ক্যালকুলেট করুন
  • মেইন মেথড থেকে:
    • arr := []
    • for k in range 2 to M+1: ইনক্লুশন-এক্সক্লুশন প্রিন্সিপল ব্যবহার করে কাউন্ট করুন
    • total := arr[-1]
    • diff := [arr[0]] + [arr[cnt+1] - arr[cnt] for cnt in range(M-1)]
    • output := sum(diff[cnt] * (cnt+1) / total for cnt in range(M))
    • output রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:

combination = {}

def nCr(n, k_in):
    k = min(k_in, n - k_in)
    if n < k or k < 0:
        return 0
    elif (n, k) in combination:
        return combination[(n, k)]
    elif k == 0:
        return 1
    elif n == k:
        return 1
    else:
        a = 1
        for cnt in range(k):
            a *= (n - cnt)
            a //= (cnt + 1)
            combination[(n, cnt + 1)] = a
        return a

def solve(M, N):
    arr = []
    for k in range(2, M + 2):
        a = 1
        s = 0
        for i in range(M // k + 2):
            if M < i * k:
                break
            s += a * nCr(N, i) * nCr(N - 1 + M - i * k, M - i * k)
            a *= -1
        arr.append(s)
    total = arr[-1]
    diff = [arr[0]] + [arr[cnt + 1] - arr[cnt] for cnt in range(M - 1)]
    output = sum(diff[cnt] * (cnt + 1) / total for cnt in range(M))
    return output

M = 3
N = 3
print(solve(M, N))

ইনপুট

3, 3

আউটপুট

2.2
  1. পাইথনে k সংখ্যা মুছে দেওয়ার পর সর্বোচ্চ সन्नিহিত পার্থক্য ন্যূনতম করার প্রোগ্রাম

  2. পাইথনে k অপারেশন পর পর সর্বনিম্ন সম্ভাব্য সর্বোচ্চ মান বের করার প্রোগ্রাম

  3. পাইথনে তালিকায় মান ও ফ্রিকোয়েন্সি সমান এলিমেন্ট খুঁজে বের করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম ডিকশনারিতে দ্বিতীয় সর্বোচ্চ মান বের করা