ความท้าทายนี้แต่ด้วยสเป็คที่ดีกว่า
สเป็ค
โปรแกรมของคุณจะใช้สมการเชิงเส้นที่มีตัวแปรเดียวและเอาท์พุทค่าของx
x
อินพุต / แยกวิเคราะห์
- ข้อมูลที่ป้อนจะมีเฉพาะตัวเลขตัวดำเนินการวงเล็บ (
()
)x
และ=
เครื่องหมาย (ซึ่งหมายความว่าไม่มีช่องว่าง) - วงเล็บจะมีความสมดุลเสมอ
- จะต้องมีอย่างน้อย 1
x
เสมอx
อาจจะนำหน้าด้วยตัวเลข - สมการทั้งหมดจะมีผลลัพธ์เดียว
จำนวนสามารถกำหนดได้โดยทำตามขั้นตอนเหล่านี้ จำนวนสามารถกำหนดได้โดย regex -?(\d+(\.\d+)?|\.\d+)
นี้:
หากคุณไม่ได้พูด regex: ตัวเลขถูกกำหนดเป็น 0-9
- มันอาจจะมี
-
จุดเริ่มต้นของมันหมายถึงเชิงลบ - จากนั้นอาจมีตัวเลขบางตัว หากไม่ใช่ตัวเลขใด ๆ จะมีจุดทศนิยม
- หากจุดทศนิยมมีอยู่อย่างน้อยหนึ่งหลักจะตามมา
จำนวน / มูลค่าที่ใหญ่ที่สุดจะถูกกำหนดโดยความสามารถของภาษาของคุณ
ประกอบการใด ๆ ของ: +-*/
พวกเขามักจะปรากฏระหว่างตัวเลขและหรือวงเล็บ
วิธี(5)(5)
นี้ไม่ได้เป็นอินพุตที่ถูกต้องเพื่อประโยชน์ของความเรียบง่าย
วงเล็บจะมีนิพจน์ที่ถูกต้องเสมอ (การรวมตัวเลขและ / หรือโอเปอเรเตอร์ที่ถูกต้อง) ไว้ภายใน เครื่องหมายวงเล็บแบบ "สมดุล" ถูกกำหนดเนื่องจากทุกคน(
จะมีการปิดที่เกี่ยวข้อง)
การประเมินผล
- ควรปฏิบัติตามลำดับของการดำเนินการและลำดับความสำคัญคือ (สูงสุดไปต่ำสุด):
- วงเล็บ (ซ้อนกันลึกสุดก่อน)
- การคูณและการหาร
- การบวกและการลบ
- หากโอเปอเรเตอร์สองรายการที่มีลำดับความสำคัญเท่ากันเกิดขึ้นคุณควรเลือกซ้าย -> ขวา
เอาท์พุต
คุณควรส่งออกผลลัพธ์ในบางวิธี หากคุณไม่ได้ผลลัพธ์เพียงผลลัพธ์จำนวนชี้แจงในคำตอบของคุณวิธีการส่งออกเป็น รูปแบบผลลัพธ์ของคุณควรสอดคล้องกัน ผลลัพธ์อาจเป็นทศนิยม แต่จะมีเหตุผลเสมอความแม่นยำนั้น จำกัด อยู่ที่ความแม่นยำของภาษาของคุณ เฉพาะในกรณีที่ภาษาของคุณไม่รองรับเลขทศนิยมคุณไม่จำเป็นต้องสนับสนุน
กฎระเบียบ
- บิวด์อิน trivializing งานนี้ได้รับอนุญาตแต่คุณต้องเพิ่ม
[uses built-in]
อย่างชัดเจนในส่วนหัวของคำตอบ นี่เป็นการยกเว้นคำตอบของคุณจากการชนะ - "Built-in trivializing ภารกิจนี้" เป็นหนึ่งใน:
- สิ่งที่ใช้ในสมการและส่งออกค่าสำหรับตัวแปร /
- สิ่งที่จะทำให้สมการง่ายขึ้นอย่างสมบูรณ์
- การใช้
eval
หรือฟังก์ชั่นที่เกี่ยวข้องในการแยกวิเคราะห์จำนวนมาก การใช้งานeval
และฟังก์ชั่นที่เกี่ยวข้องจะไม่ได้รับอนุญาตหากมีการใช้เพื่อ (ด้วยการปรับเปลี่ยนน้อยที่สุดให้กับอินพุต) แก้สมการเชิงเส้น - หากคุณมีข้อสงสัยให้ถามในความคิดเห็น
- บิวด์อินซึ่งแยกวิเคราะห์สมการได้รับอนุญาต
ตัวอย่าง
3+4=x
7
4+x=5
1
3+3*3=x
12
3x-4=7+2x
11
3--1=x
4
3*(2+4x)=7x-4
-2
1.2+2.3x=5.8
2
10=4x
2.5
อินพุตไม่ถูกต้อง :
(5)(4)=x no operator between (5) and (4)
5(x+3)=2 no operator 5 and (...)
x=y the only variable is x
4=3 there is no x
x+3=x-7 no solution
x=x infinite solutions
+5=x + is not an unary operator. -5=x would be valid though
1/(x-3)=5 Nonlinear
3/x Nonlinear
eval
นับว่าเป็นเรื่องท้าทายเล็กน้อยหรือไม่ นอกจากนี้รูปแบบของการnew Function(...)
นับจะ?