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

পাইথনে এনকোডেড মেসেজ ডিকোড করার উপায়ের সংখ্যা খুঁজে বের করার প্রোগ্রাম


মনে করুন ম্যাপিং 'a'=1, 'b'=2, ..., 'z'=26, এবং একটি এনকোডেড মেসেজ স্ট্রিং দেওয়া আছে। এটি কতভাবে ডিকোড করা যায় সেটি গণনা করতে হবে।

উদাহরণস্বরূপ, message = "222" হলে আউটপুট হবে ৩, কারণ এটি ৩ভাবে ডিকোড হয়: bbb, bv, vb।

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

  • memo := ০ দিয়ে পূরিত তালিকা, আকার message-এর আকার + ১
  • memo[0] := 1
  • memo[1] := 1 যদি message[0] != "0" অন্যথায় 0
  • i = 2 থেকে message-এর আকার পর্যন্ত,
    • n1 := message[i-1:i]-এর সংখ্যামান
    • n2 := message[i-2:i]-এর সংখ্যামান
    • n1_valid := true যদি n1 > 0
    • n2_valid := true যদি n2 > 9 এবং n2 < 27
    • যদি n1_valid, memo[i] += memo[i-1]
    • যদি n2_valid, memo[i] += memo[i-2]
  • memo-এর শেষ উপাদান ফেরত দিন

উদাহরণ

class Solution:
    def solve(self, message):
        memo = [0 for i in range(len(message)+1)]
        memo[0] = 1
        memo[1] = 1 if message[0]!="0" else 0
        for i in range(2,len(message)+1):
            n1 = int(message[i-1:i])
            n2 = int(message[i-2:i])
            n1_valid= n1>0
            n2_valid= n2>9 and n2<27
            if n1_valid:
                memo[i]+=memo[i-1]
            if n2_valid:
                memo[i]+=memo[i-2]
        return memo[-1]

ob = Solution()
message = "2223"
print(ob.solve(message))

ইনপুট

"2223"

আউটপুট

5
  1. পাইথনে n ডাইস ফেলে নির্দিষ্ট টোটাল পাওয়ার উপায়ের সংখ্যা গণনা করার প্রোগ্রাম

  2. পাইথনে ২ডি ম্যাট্রিক্সে ডান ও নিচে চলা সীমাবদ্ধ রেখে সর্বোচ্চ কয়েন সংগ্রহ করার প্রোগ্রাম

  3. পাইথনে সিঁড়ি চড়ার উপায় গণনা করার প্রোগ্রাম (১ বা ২ ধাপ)

  4. পাইথনে লিস্ট থেকে সর্বোচ্চ সংখ্যা বের করা