Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาคำสั่งล่ามเป้าหมายใน Python


สมมติว่าเรามีตัวแยกวิเคราะห์เป้าหมายที่สามารถตีความคำสั่งสตริงที่กำหนดได้ คำสั่งประกอบด้วย

  • ตัวอักษร "G"

  • วงเล็บเปิดและปิด "()"

  • และ/หรือ "(อัล)" ตามลำดับ

ตัวแยกวิเคราะห์เป้าหมายของเราจะตีความ "G" เป็นสตริง "G", "()" เป็น "o" และ "(al)" เป็นสตริง "al" ท้ายที่สุดแล้ว สตริงที่ตีความจะถูกต่อกันในลำดับเดิม ดังนั้นถ้าเรามีคำสั่ง string เราต้องหาการตีความคำสั่งของ Goal Parser

ดังนั้น หากอินพุตเป็นเหมือน command ="G()()()(al)(al)" ผลลัพธ์จะเป็น Goooalal

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • s:=สตริงว่าง

  • สำหรับฉันในช่วง 0 ถึงขนาดของคำสั่ง - 1 ทำ

    • ถ้า command[i] ไม่เหมือนกับ "(" และ command[i] ไม่เหมือนกับ ")" ดังนั้น

      • s :=s concatenate command[i]

    • ถ้า command[i] เหมือนกับ "(" และ command[i+1] เหมือนกับ ")" และ i+1

      • s :=s ต่อ 'o'

    • ถ้า command[i] เหมือนกับ "(" แล้ว

      • ไปทำซ้ำต่อไป

    • ถ้า command[i] เหมือนกับ ")" แล้ว

      • ไปทำซ้ำต่อไป

  • ผลตอบแทน s

ตัวอย่าง (Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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