কম্পিউটার

পাইথনে পছন্দগুলি গ্রহণ করে সমস্ত সম্ভাব্য স্ট্রিং তৈরি করার প্রোগ্রাম


ধরুন আমাদের কাছে ছোট হাতের বর্ণমালার একটি স্ট্রিং আছে, অন্যান্য অক্ষর যেমন "[", "|", এবং "]"। এখানে "[a |b s দ্বারা প্রতিনিধিত্ব করতে পারে এমন সমস্ত সম্ভাব্য মান ধারণকারী স্ট্রিংগুলির একটি তালিকা আমাদের খুঁজে বের করতে হবে। এখানে "[]" নেস্ট করা যাবে না এবং যেকোন সংখ্যক পছন্দ থাকতে পারে।

সুতরাং, যদি ইনপুটটি s ="[d|t|l]im[e|s]" এর মত হয়, তাহলে আউটপুট হবে ['ডাইম', 'ডিমস', 'লাইম', 'লিমস', 'টাইম' , 'tims']

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

  • যদি s খালি হয়, তাহলে
    • খালি স্ট্রিং সহ একটি তালিকা ফেরত দিন
  • n :=s এর আকার
  • seq :=একটি নতুন তালিকা, res :=একটি নতুন তালিকা
  • একটি ফাংশন সাহায্যকারী() সংজ্ঞায়িত করুন। এটি pos
      লাগবে
    • যদি pos n এর মত হয়, তাহলে
      • seq-এ উপস্থিত প্রতিটি উপাদান যোগ করুন এবং res এ সন্নিবেশ করুন
    • অন্যথায়,
      • যদি s-এর সাবস্ট্রিং-এ "[" থাকে[সূচী থেকে শেষ পর্যন্ত], তাহলে
        • start :=pos + s এর সাবস্ট্রিংয়ে "[" এর সূচী[সূচী pos থেকে শেষ পর্যন্ত]
        • end :=pos + index of "]" s এর সাবস্ট্রিংয়ে [index pos থেকে শেষ পর্যন্ত]
        • এস এর সাবস্ট্রিং-এর প্রতিটি বিকল্পের জন্য শুরু থেকে শেষ পর্যন্ত "|" দ্বারা বিভক্ত, করুন
          • seq-এর শেষে s[সূচী থেকে শুরু করতে - 1] ঢোকান
          • seq-এর শেষে সন্নিবেশ বিকল্প
          • সহায়ক(শেষ + 1)
          • seq থেকে শেষ দুটি উপাদান মুছুন
    • অন্যথায়,
      • seq-এর শেষে s [index pos থেকে end] ঢোকান
      • সহায়ক(n)
      • seq থেকে শেষ উপাদান মুছুন
  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন:
  • সহায়ক(0)
  • বাছাই ক্রমে রিটার্ন করুন

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

উদাহরণ

class Solution:
   def solve(self, s):
      if not s:
         return [""]
      n = len(s)

      def helper(pos):
         if pos == n:
            res.append("".join(seq))
         else:
            if "[" in s[pos:]:
               start = pos + s[pos:].index("[")
               end = pos + s[pos:].index("]")
               for option in s[start + 1 : end].split("|"):
                  seq.append(s[pos:start])
                  seq.append(option)
                  helper(end + 1)
                  seq.pop()
                  seq.pop()
            else:
               seq.append(s[pos:])
               helper(n)
               seq.pop()

         seq = []
         res = []
         helper(0)
         return sorted(res)

ob = Solution()
s = "[d|t|l]im[e|s]"
print(ob.solve(s))

ইনপুট

"[d|t|l]im[e|s]"

আউটপুট

['dime', 'dims', 'lime', 'lims', 'time', 'tims']

  1. পাইথনের সমস্ত সম্ভাব্য সাবস্ট্রিংগুলির একটি সেটে প্রদত্ত অবস্থানে প্রদত্ত স্ট্রিংগুলির সাবস্ট্রিংগুলি খুঁজে বের করার জন্য প্রোগ্রাম

  2. পাইথনে সমস্ত সেগমেন্টের XOR কে শূন্যের সমান করার প্রোগ্রাম

  3. পাইথনে সম্ভাব্য সকল বৈধ পথ থেকে সর্বোচ্চ স্কোর খুঁজে বের করার প্রোগ্রাম

  4. পাইথন প্রোগ্রামের তালিকায় সব সংখ্যা গুন করতে হবে?