การจัดการกับสมการเมื่อไม่มีตัวแก้ไขสมการที่ดีนั้นยุ่งและไม่เป็นที่พอใจ ตัวอย่างเช่นถ้าฉันต้องการแสดงอินทิกรัลและวิธีแก้ปัญหามันอาจมีลักษณะดังนี้:
ส่วนประกอบ [x ^ 3 e ^ (- mx ^ 2 b / 2), dx] = - ((2 + b m x ^ 2) / (b ^ 2 * e ^ ((b m x ^ 2) / 2) M * ^ 2))
ที่integrals.wolfram.comสิ่งนี้เรียกว่า "รูปแบบการป้อนข้อมูล" ไม่มีใครชอบเห็นสมการใน "รูปแบบการป้อนข้อมูล" วิธีที่เหมาะในการแสดงภาพสมการนี้คือ:
(วุลแฟรมเรียกสิ่งนี้ว่า "รูปแบบดั้งเดิม")
สำหรับ codegolf นี้ให้เขียนโปรแกรมที่จะใช้สมการใน "รูปแบบการป้อนข้อมูล" เป็นรูปแบบการป้อนข้อมูลและเห็นภาพของสมการในรูปแบบดั้งเดิมของ "รูปแบบดั้งเดิม" ดังนั้นสำหรับตัวอย่างนี้เราอาจได้รับสิ่งนี้:
/\ 3
| x
| ------------ dx =
| 2
\/ (m x b)/2
e
2
2 + b m x
-(-----------------)
2
2 (b m x )/2 2
b e m
ที่ต้องการ:
- อย่าสับเปลี่ยนให้ง่ายขึ้นหรือจัดเรียงอินพุตใหม่ในทางใดทางหนึ่ง แสดงผลในรูปแบบเดียวกันที่อธิบายโดยอินพุต
- สนับสนุนการดำเนินการทางคณิตศาสตร์สี่ขั้นพื้นฐาน (+, -, *, /) เมื่อไม่คูณสองหมายเลขที่อยู่ติดกันสัญลักษณ์ * จะถูกบอกเป็นนัยและควรละเว้น
- ไม่จำเป็นต้องรองรับการรวม (ดังแสดงในตัวอย่างด้านบน) ความสามารถในการรองรับการป้อนข้อมูลด้วยฟังก์ชันเช่นอินทิเกรต [... ] หรือ Sqrt [... ] เป็นโบนัส
- กำลังสนับสนุนตามที่แสดงในตัวอย่างข้างต้น (รูทที่ n สามารถสร้างแบบจำลองได้โดยการเพิ่มกำลังไฟที่ 1 / nth)
- เครื่องหมายวงเล็บที่ซ้ำซ้อน (เช่นที่อยู่รอบตัว denomentator และตัวเศษของเศษส่วนขนาดใหญ่ในตัวอย่างด้านบน) ควรละเว้น
- นิพจน์ในตัวส่วนและตัวเศษของเศษส่วนควรอยู่กึ่งกลางด้านบนและด้านล่างเส้นแบ่งแนวนอน
- คุณสามารถเลือกได้ว่าจะเริ่มบรรทัดใหม่หลังจากเครื่องหมายเท่ากับหรือไม่ ในตัวอย่างข้างต้นบรรทัดใหม่จะเริ่มขึ้น
- ลำดับของการดำเนินการจะต้องเหมือนกันในผลลัพธ์เช่นเดียวกับที่อยู่ในอินพุต
ตัวอย่างของอินพุตและเอาต์พุตที่เกี่ยวข้องสำหรับการทดสอบโซลูชันของคุณ:
การป้อนข้อมูล:
1/2 + 1/3 + 1/4
เอาท์พุท:
1 1 1
- + - + -
2 3 4
การป้อนข้อมูล:
3x^2 / 2 + x^3^3
เอาท์พุท:
2 3
3 x 3
---- + x
2
การป้อนข้อมูล:
(2 / x) / (5 / 4^2)
เอาท์พุท:
2
-
x
--
5
--
2
4
การป้อนข้อมูล:
(3x^2)^(1/2)
เอาท์พุท:
2 1/2
(3 x )