কম্পিউটার

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


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

সুতরাং, যদি ইনপুটটি বার্তা ="222" এর মতো হয়, তাহলে আউটপুট হবে 3, কারণ এটিকে 3 উপায়ে ডিকোড করা যেতে পারে:bbb, bv, এবং vb৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • memo :=0s আকারের একটি তালিকা বার্তা আকার + 1

    এর মতোই
  • মেমো[0] :=1

  • মেমো[1] :=1 যখন বার্তা[0] "0" এর মতো নয় অন্যথায় 0

  • আমি রেঞ্জ 2 থেকে বার্তার আকারের জন্য, করুন

    • n1 :=বার্তার সংখ্যাসূচক মান [সূচী i-1 থেকে i]

    • n2 :=বার্তার সাংখ্যিক মান [সূচক i-2 থেকে i]

    • n1_valid:=সত্য যখন n1> 0

    • n2_valid:=সত্য যখন n2> 9 এবং n2 <27

    • যদি n1_valid সত্য হয়, তাহলে

      • মেমো[i] :=মেমো[i] + মেমো[i-1]

    • যদি n2_valid সত্য হয়, তাহলে

      • মেমো[i] :=মেমো[i] + মেমো[i-2]

  • মেমোর শেষ উপাদান ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

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. পাইথন প্রোগ্রাম একটি তালিকায় সবচেয়ে বড় সংখ্যা খুঁজে বের করতে