কম্পিউটার

পাইথনে প্রদত্ত সীমাবদ্ধতার সাথে একটি স্ট্রিংকে অন্যটিতে রূপান্তর করা সম্ভব কিনা তা পরীক্ষা করুন


ধরুন আমাদের দুটি স্ট্রিং s এবং t আছে মাত্র তিনটি অক্ষর 'A', 'B' এবং '#'। s-এ এই ক্রিয়াকলাপগুলি সম্পাদন করে s-কে t-এ রূপান্তর করা সম্ভব কিনা তা আমাদের পরীক্ষা করতে হবে।

  • 'A' শুধুমাত্র বাম দিকে যেতে পারে
  • 'B' শুধুমাত্র ডান দিকে যেতে পারে
  • 'A' বা 'B' একে অপরকে অতিক্রম করতে পারে না

সুতরাং, যদি ইনপুটটি s ="##AB##B" t ="A###B#B" এর মতো হয়, তাহলে আউটপুটটি True হবে যেমন s এ A সহজেই বাম অবস্থানে যেতে পারে এবং মধ্যম B। ডানদিকে এক ধাপ সরাতে পারেন

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

  • s :=s থেকে অক্ষর নিয়ে একটি তালিকা
  • t :=t থেকে অক্ষর নিয়ে একটি তালিকা
  • যদি s-এর আকার t-এর আকারের সমান না হয়, তাহলে
    • মিথ্যে ফেরত দিন
  • যদি s এবং t-এ 'A'-এর গণনা আলাদা হয় বা s এবং t-এ 'B'-এর গণনা আলাদা হয় বা, তাহলে
    • মিথ্যে ফেরত দিন
  • আমি 0 থেকে s - 1 এর পরিসরের জন্য, কর
    • যদি s[i] '#' এর মতো না হয়, তাহলে
        j-এর জন্য 0 থেকে t - 1 এর মাপ, করুন
        • যদি (t[j] s[i] এর মত না হয়) এবং t[j] '#' এর মত না হয়, তাহলে
          • মিথ্যে ফেরত দিন
        • যদি t[j] s[i] এর মত হয়, তাহলে
          • t[j] :='#'
          • যদি s[i] 'A' এবং i
          • মিথ্যে ফেরত দিন
        • যদি s[i] 'B' এবং i> j এর মত হয়, তাহলে
          • মিথ্যে ফেরত দিন
        • লুপ থেকে বেরিয়ে আসুন
  • সত্য ফেরান
  • উদাহরণ

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

    def solve(s, t):
       s = list(s)
       t = list(t)
       if len(s) != len(t):
          return False
       if s.count('A') != t.count('A') or s.count('B') != t.count('B'):
          return False
       for i in range(len(s)):
          if s[i] != '#':
             for j in range(len(t)):
                if (t[j] != s[i]) and t[j] != '#':
                   return False
                if t[j] == s[i]:
                   t[j] = '#'
                   if s[i] == 'A' and i < j:
                      return False
                   if s[i] == 'B' and i > j:
                      return False
                   break
       return True
    s = "##AB##B"
    t = "A###B#B"
    print (solve(s, t))

    ইনপুট

    "##AB##B", "A###B#B"

    আউটপুট

    True

    1. পাইথন - একটি প্রদত্ত স্ট্রিং বাইনারি স্ট্রিং কিনা তা পরীক্ষা করুন

    2. স্ট্রিং অভিধানকে পাইথনে অভিধানে রূপান্তর করুন

    3. পাইথনে তালিকার একটি স্ট্রিং উপস্থাপনাকে তালিকায় রূপান্তর করুন

    4. আরেকটি পাইথন স্ট্রিং যোগ করুন