คุณถูกขนส่งในเอกภพคู่ขนานโดยที่ผู้คนเขียนสมการทางคณิตศาสตร์บนคอมพิวเตอร์เป็นศิลปะ ASCII ด้วยมือ ในฐานะที่เป็นผู้เสพติด LaTeX สิ่งนี้ไม่เป็นที่ยอมรับอย่างสมบูรณ์และคุณควรทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ
เป้าหมายของคุณคือการเขียนโปรแกรมที่ให้ผลลัพธ์เป็นรูปแบบ ASCII ของสมการที่ป้อนเป็นคำสั่ง LaTeX math
คำสั่ง LaTeX ที่จำเป็นเพื่อรองรับ
ผลรวม: คำสั่ง LaTeX สำหรับผลรวมคือ
\sum_{lower bound}^{upper bound}
ตัวเลข ASCII ที่คุณต้องใช้สำหรับผลรวมคือ:
upper bound ___ \ ` /__, lower bound
ผลิตภัณฑ์: คำสั่ง LaTeX สำหรับผลิตภัณฑ์คือ
\prod_{lower bound}^{upper bound}
รูป ASCII ที่คุณต้องใช้สำหรับผลิตภัณฑ์คือ:
upper bound ____ | | | | lower bound
เศษส่วน: คำสั่ง LaTeX สำหรับเศษส่วนคือ
\frac{numerator}{denominator}
ตัวเลข ASCII ที่คุณต้องใช้สำหรับเศษส่วนคือ:
numerator ----------- denominator
สิ่งใดก็ตามที่ไม่ได้เป็นหนึ่งในสามคำสั่งนั้นจะปรากฏตามที่เป็น ตัวอย่างเช่น\sum{i=3}^{e^10}\frac{3x+5}{2}
ควรแสดงเป็น
e^10
___ 3x+5
\ ` ----
/__, 2
i=3
ปัจจัยการผลิต
อินพุตเป็นคำสั่ง LaTeX ที่ส่งผ่านเป็นสตริง (หรือเทียบเท่ากับสตริงภาษาของคุณ) คำสั่ง LaTeX สามารถซ้อนกันได้ตัวอย่างเช่น\frac{\frac{1}{2}}{3}
อินพุตที่ถูกต้อง อินพุตควรถูกต้องเสมอ (ไม่จำเป็นต้องตรวจสอบไวยากรณ์ของ LaTeX ในรหัสของคุณ) อินพุตจะประกอบด้วยคำสั่ง LaTeX สามคำที่แสดงไว้ด้านบนและ 'ข้อความ' ที่คุณไม่จำเป็นต้องจัดรูปแบบ
คำสั่ง LaTeX จะมาพร้อมกับไวยากรณ์ที่แสดงไว้ด้านบนเสมอเช่นผลรวมและผลิตภัณฑ์จะมีขอบเขตบนและล่างเสมอ (แม้ว่าจะว่างเปล่า) และจะมีเศษและส่วนสำหรับเศษส่วนเสมอ
เราคิดว่าขอบเขตของผลรวมและผลิตภัณฑ์มีความยาวไม่เกิน 4 อักขระ (= ความกว้างของผลรวมและสัญลักษณ์ผลิตภัณฑ์) ดังนั้นคุณไม่ต้องกังวลเกี่ยวกับปัญหาการทับซ้อนที่อาจเกิดขึ้น สำหรับเหตุผลที่คล้ายคลึงกันเราถือว่าขอบเขตเป็นเพียง 'text' และจะไม่เป็นคำสั่ง LaTeX เช่น\sum_{\sum_{1}^{2}}^{1}
ไม่ใช่อินพุตที่ถูกต้อง
เอาท์พุท
เอาต์พุตของโปรแกรมของคุณคือการแทน ASCII ของคำสั่ง LaTeX ที่คุณได้รับเป็นอินพุต
โปรแกรมของคุณจะต้องคำนึงถึงการจัดตำแหน่งในแนวนอน: ตัวอย่างเช่นขอบเขตของผลรวมหรือผลิตภัณฑ์จะต้องจัดแนวนอนด้วยผลรวมหรือสัญลักษณ์ผลิตภัณฑ์ (ซึ่งมีความกว้างทั้ง 4 ตัวอักษร) หากขอบเขตมีจำนวนอักขระคี่มันไม่สำคัญว่าจะเป็นอักขระหนึ่งตัวทางด้านขวาหรือด้านซ้ายของจุดกึ่งกลางแล้วแต่จำนวนใดจะดี เส้นของเศษส่วนจะต้องมีความยาวเท่ากับตัวเศษหรือส่วนใดก็ตามที่ยาวที่สุด
โปรแกรมของคุณจะต้องคำนึงถึงการจัดตำแหน่งในแนวตั้งเช่น\frac{\frac{1}{2}}{3} = \frac{1}{6}
ควรแสดงเป็น
1
-
2 1
- = -
3 6
สำหรับผลรวมและผลิตภัณฑ์เนื่องจากสัญลักษณ์มีความสูง 4 ตัวอักษรศูนย์แนวตั้งจะถือว่าเป็นบรรทัดที่สองจากด้านบน
ระยะห่างแนวนอนจะถือว่าถูกต้องในอินพุตที่กำหนดเช่นช่องว่างในอินพุตควรแสดงในเอาต์พุต
กรณีทดสอบ
อินพุต
abc = 2
เอาท์พุต
abc = 2
อินพุต
e = \sum_{n=0}^{+inf} \frac{1}{n!}
เอาท์พุต
+inf ___ 1 e = \ ` -- /__, n! n=0
อินพุต
e^x = 1 + \frac{x}{1 - \frac{x}{2 + x - ...}}
เอาท์พุต
x e^x = 1 + --------------- x 1 - ----------- 2 + x - ...
อินพุต
\prod_{i=1}^{n} \frac{\sum_{j=0}^{m} 2j}{i + 1}
เอาท์พุต
m ___ \ ` 2j n /__, ____ j=0 | | ------- | | i + 1 i=1
อินพุต
\frac{sum}{prod} = \sum_{frac}^{prod} sum
เอาท์พุต
prod sum ___ ---- = \ ` sum prod /__, frac
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ