ความท้าทาย
คุณเป็นเจ้าของบริการที่น่าอัศจรรย์ที่เรียกว่าCoyote Betaซึ่งตอบคำถามคณิตศาสตร์ที่ผู้ใช้ส่งไปยังอินเทอร์เน็ตได้อย่างน่าอัศจรรย์
แต่ปรากฎว่าแบนด์วิดท์มีราคาแพง คุณมีสองทางเลือกคือสร้าง " Coyote Beta Pro" หรือหาวิธีแก้ปัญหานี้ (x + 2)
เพิ่งมีคนสอบถาม ลูกค้าไม่สามารถส่งx+2
และผู้ใช้จะไม่เห็นความแตกต่าง?
งาน
งานของคุณคือ "ลดขนาด" การแสดงออกทางคณิตศาสตร์ รับนิพจน์อินพุตคุณต้องกำจัดช่องว่างและวงเล็บจนกว่ามันจะให้การแสดงอินพุทเดียวกันน้อยที่สุด วงเล็บที่ล้อมรอบการดำเนินการเชื่อมโยงไม่จำเป็นต้องเก็บรักษาไว้
ผู้ประกอบการเพียงให้ที่นี่เป็น+
, -
, *
, /
และ^
(ยกกำลัง) โดยมีการเชื่อมโยงกันทางคณิตศาสตร์ที่ได้มาตรฐานและมีความสำคัญ ช่องว่างเฉพาะที่ระบุในอินพุตจะเป็นอักขระช่องว่างจริง
ตัวอย่างอินพุต / เอาต์พุต
Input | Output
------------|--------------
(2+x) + 3 | 2+x+3
((4+5))*x | (4+5)*x
z^(x+42) | z^(x+42)
x - ((y)+2) | x-(y+2)
(z - y) - x | z-y-x
x^(y^2) | x^y^2
x^2 / z | x^2/z
- (x + 5)+3 | -(x+5)+3
เกณฑ์การให้คะแนน
อินพุต / เอาต์พุตสามารถใช้วิธีการที่ต้องการ โปรแกรมที่เล็กที่สุดเป็นไบต์ชนะ
บิตที่แน่นอน
การยกกำลังนั้นมีความสัมพันธ์ที่ถูกต้องและเป็นไปตามความสำคัญทางคณิตศาสตร์มาตรฐาน (สูงสุด) ตัวอักษรเป็นตัวเลขที่ถูกต้องและแท้จริงตัวแปรที่ถูกต้อง/[0-9]+/
/[a-z]+/
ตัวอักษรตัวแปรเดียวหมายถึงค่าเดียวแม้ว่าความยาวอักขระจะยาวกว่า 1
สิ่งที่มีความหมายโดย "วงเล็บรอบการดำเนินการเชื่อมโยงไม่จำเป็นต้องเก็บรักษาไว้" คือผลลัพธ์ที่ควรประกอบด้วยการแสดงออกที่ทำให้ต้นไม้แยกวิเคราะห์เหมือนกันยกเว้นว่าการดำเนินการเชื่อมโยงสามารถจัดใหม่ได้
/[a-z]+/
หมายความว่าab
ไม่อนุญาตการคูณด้วยการตีข่าวเช่น?
2+(3+4)
ที่จะเปลี่ยนเป็น2+3+4
ใช่มั้ย สิ่งนี้จะเปลี่ยนแผนผังการแยกวิเคราะห์
x^(y/2)=x^y/2
นั้น การยกกำลังมีลำดับความสำคัญสูงกว่าคือเออร์x^y/2=(x^y)/2
โก
Prompt X:expr(X)
TI-BASIC แต่คุณไม่สามารถทำให้เป็นเรื่องง่าย :(