Quylthulgเป็นภาษาโดย Chris Pressey ที่พยายามแก้ไขปัญหาสัญกรณ์ของ infix โดยใช้สิ่งที่เรียกว่าpanfix :
เช่น postfix Panfix ไม่ต้องการการปรับใช้ Arcane contrivances เช่นวงเล็บเพื่อแทนที่การมาก่อนของโอเปอเรเตอร์ ในเวลาเดียวกัน panfix อนุญาตให้ระบุเงื่อนไขในลำดับและลักษณะเดียวกับมัดซึ่งเป็นสัญกรณ์ธรรมชาติและใช้งานง่ายสำหรับผู้ที่คุ้นเคย
คุณจะได้รับความสะดวกสบายของสัญกรณ์มัดพร้อมกับความไม่น่าสงสัยของคำนำหน้าหรือ postfix? ใช้แน่นอนทั้งสาม!
=y=+*3*x*+1+=
เป็นทางการมากขึ้นปล่อยให้+
เป็นโอเปอเรเตอร์a
และb
เป็นนิพจน์ จากนั้น(a+b)
เป็นนิพจน์มัดที่ถูกต้อง (วงเล็บ) การแสดง Panfix ของนิพจน์นั้นคือ+a+b+
ที่ juxtaposition แสดงถึงการต่อกัน
เป้าหมายของคุณคือการใช้สตริง panfix และแปลงเป็นมัดมัดเต็ม:
(y=((3*x)+1))
เพื่อความง่ายเราจะทำการเปลี่ยนแปลงดังต่อไปนี้:
- ตัวดำเนินการสามารถประกอบด้วยอักขระที่ไม่ซ้ำกันสองตัวเท่านั้น (คุณสามารถเลือกได้ แต่ที่นี่ฉันจะใช้
*
และ+
) - มีเพียงตัวอักษรเดียวซึ่งประกอบด้วยตัวละครอื่นที่แตกต่างกัน (คุณสามารถเลือกใด ๆ แต่ที่นี่ฉันจะใช้
_
) - อินพุตจะเป็นนิพจน์ Panfix ที่มีรูปแบบที่ดี
สำหรับความซับซ้อนเราจะทำการเปลี่ยนแปลงดังต่อไปนี้:
- ผู้ประกอบการสามารถประกอบด้วยจำนวนอักขระที่เป็นบวกใด ๆไม่ใช่เพียงหนึ่งตัวอักษร
สิ่งนี้ทำให้ความท้าทายมีความยุ่งยากมากขึ้นเนื่องจากคุณไม่สามารถระบุได้ว่าสตริงย่อยของตัวดำเนินการที่กำหนดจะถูกแบ่งพาร์ติชันโดยไม่ได้ดูสตริงที่เหลือหรือไม่
นี่คือการดำเนินการอ้างอิงสำหรับความท้าทายที่ได้รับความอนุเคราะห์จาก @ user202729
กรณีทดสอบ
format: input -> output
+*+_*+_*+++_+*+_*+_*+++ -> ((_*+_)+(_+(_*+_)))
**++*+***++_+_++_+*++*+***_*++*+*****_**_*_*** -> ((((_+_)+_)*++*+***_)*(_*(_*_)))
***_**_***_* -> ((_**_)*_)
+_+_+ -> (_+_)
*+*+++**+***+++++_*+*+++**+***+++++_*+*+++**+***+++++ -> (_*+*+++**+***+++++_)
*++++*+*_*_*+*+++****+_++****+_++****++*+*+++_*+++ -> (((_*_)+*+(_++****+_))*+++_)
+**+_*+_*+*_*+*_*+*_+*_+**+ -> (((_*+_)*_)+(_*(_+*_)))
+**+++++_+++++_+++++*_*+*+_++++++_+++++_+++++++* -> (((_+++++_)*_)+*(_+(_+++++_)))
+*+*+_+*+_+*+*_*+*_*+*+_+*+_+*+*+ -> (((_+*+_)*_)+(_*(_+*+_)))
**_**_**_*_****_* -> ((_*(_*(_*_)))*_)
ฉันใช้โปรแกรมนี้เพื่อสร้างสตริงมัดสำหรับความท้าทายนี้ (การแปลงเป็น panfix เป็นเรื่องเล็กน้อย แต่การย้อนกลับไม่ใช่)
**_**_**_*_****_*
กรณีทดสอบที่แนะนำ: คำตอบที่ฉันทดสอบได้ล้มเหลวทั้งหมดนี้
(_ + _)
ไหม?