แจ็คชอบภาษาการเขียนโปรแกรม C แต่ไม่ชอบเขียนนิพจน์เช่นV=a*b*h;
การคูณค่า
เขาอยากจะเขียนV=abh;แทนทำไมผู้แปลจึงควรคร่ำครวญถึงabhสัญลักษณ์ที่ไม่ได้นิยามเนื่องจากint a, b, h;มีการนิยามดังนั้นเราจึงสามารถอนุมานการคูณได้
ช่วยเขาใช้เครื่องมือแยกวิเคราะห์ที่ถอดรหัสคำศัพท์การคูณเดียวให้ทราบชุดของตัวแปรที่กำหนดในขอบเขตปัจจุบัน
เพื่อความง่ายไม่นับรวมจำนวน (ตาม2*a*b) เข้าด้วยกันจะปรากฏเฉพาะตัวแปรเท่านั้น
อินพุตเป็นคำศัพท์การคูณ T , เติมเต็ม regexp:
[a-zA-Z_][a-zA-Z_0-9]*
และตัวแปรชุด Z
การแยก P ของคำว่า T บนชุดตัวแปร Z คือสตริงที่ตอบสนองต่อไปนี้:
- หลังจากลบสิ่งที่เกิดขึ้นทั้งหมด
*จาก P เราได้รับ T - อาจเป็นชื่อตัวแปรจาก Z หรือประกอบด้วยชื่อตัวแปรที่เหมาะสมจาก Z แยกด้วย
*อักขระเดี่ยว
วิธีแก้ปัญหาควรพิมพ์การแยกวิเคราะห์คำทั้งหมด
ตัวอย่าง:
Vars a, c, ab, bc
Term abc
Solution ab*c, a*bc
Vars ab, bc
Term abc
Solution -
Vars -
Term xyz
Solution -
Vars xyz
Term xyz
Solution xyz
Vars width, height
Term widthheight
Solution width*height
Vars width, height
Term widthheightdepth
Solution -
Vars aaa, a
Term aaaa
Solution aaa*a, a*aaa, a*a*a*a
อินพุต (รายการตัวแปรและคำศัพท์) อาจมีให้ในลักษณะที่เหมาะสมกับภาษา
เอาต์พุตสามารถอยู่ในรูปแบบที่เหมาะสม (การแยกวิเคราะห์หนึ่งรายการต่อบรรทัดหรือรายการที่คั่นด้วยเครื่องหมายจุลภาค ฯลฯ ) - แต่ควรมีความชัดเจนและเป็นไปได้ที่จะอ่าน
เอาต์พุตว่างเป็นที่ยอมรับได้หากไม่มีการแยกคำที่เป็นไปได้ (ในตัวอย่างที่ฉันใช้ '-' เพื่อความชัดเจน)
นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ
a*aaa aaa*aและไม่ใช่ab*c c*ab
ab*cการแยกวิเคราะห์ไม่ถูกต้องเนื่องจากcไม่ใช่ตัวแปรที่อนุญาต