কম্পিউটার

পাইথনে লক্ষ্য পার্সার ইন্টারপ্রিটেশন কমান্ড খোঁজার প্রোগ্রাম


ধরুন আমাদের একটি গোল পার্সার আছে যেটি একটি প্রদত্ত স্ট্রিং কমান্ডকে ব্যাখ্যা করতে পারে। একটি কমান্ড

নিয়ে গঠিত
  • একটি বর্ণমালা "G",

  • খোলা এবং বন্ধ বন্ধনী "()"

  • এবং/অথবা "(আল)" কিছু ক্রমে।

আমাদের লক্ষ্য পার্সার "G" কে স্ট্রিং "G", "()" কে "o" হিসাবে এবং "(al)" কে স্ট্রিং "al" হিসাবে ব্যাখ্যা করবে। অবশেষে ব্যাখ্যা করা স্ট্রিংগুলিকে মূল ক্রমে সংযুক্ত করা হয়। তাই যদি আমাদের স্ট্রিং কমান্ড থাকে, তাহলে আমাদের লক্ষ্য পার্সারের কমান্ডের ব্যাখ্যা খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুট কমান্ডের মত হয় ="G()()()(al)(al)", তাহলে আউটপুট হবে Goooalal।

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

  • s:=ফাঁকা স্ট্রিং

  • i এর জন্য 0 থেকে কমান্ডের আকার - 1, করুন

    • যদি কমান্ড[i] "(" এর মত না হয় এবং কমান্ড[i] ") এর মত না হয়, তাহলে

      • s :=s concatenate কমান্ড[i]

    • যদি কমান্ড[i] একই হয় "(" এবং কমান্ড[i+1] একই হয় ")" এবং i+1

      • s :=s concatenate 'o'

    • কমান্ড[i] যদি "(" এর মত হয়, তাহলে

      • পরবর্তী পুনরাবৃত্তির জন্য যান

    • যদি কমান্ড[i] ")" এর মত হয়, তাহলে

      • পরবর্তী পুনরাবৃত্তির জন্য যান

  • s

    ফেরত দিন

উদাহরণ (পাইথন)

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

def solve(command):
   s=""
   for i in range(len(command)):
      if command[i]!="(" and command[i]!=")":
         s+=command[i]
      if command[i]=="(" and command[i+1]==")" and i+1<len(command):
         s+='o'
      if command[i]=="(":
         continue
      if command[i]==")":
         continue
   return s

command = "G()()()(al)(al)"
print(solve(command))

ইনপুট

"G()()()(al)(al)"

আউটপুট

Goooalal

  1. পাইথনে একটি সংখ্যার সুপার ডিজিট খোঁজার প্রোগ্রাম

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

  3. পাইথনে বহুভুজের এলাকা খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে বহুভুজের পরিধি খুঁজে বের করার প্রোগ্রাম