บทนำ
มีจุดในวัยเด็กเมื่อคุณคิดว่าคุณเชี่ยวชาญในการเพิ่มและทวีคูณแล้วมีบางคนเข้ามาและแจ้งให้คุณทราบว่า:
a * b + c = (a * b) + c! = a * (b + c),
และมันไม่ได้เป็นกระบวนการที่ง่ายหรือเชิงเส้นเหมือนที่คุณเคยสอนมาก่อน คุณได้เรียนรู้ว่ามีสิ่งที่เรียกว่าคำสั่งของการดำเนินงาน นี่เป็นวิธีที่สำคัญมากในการรักษาระดับความมั่นคงและในการแสดงออกโดยไม่ต้องวงเล็บให้ได้รับทุกอย่าง
เรื่องราวทั่วไป
อยู่มาวันหนึ่งคุณตื่นขึ้นมาด้วยเสียงตื่นตระหนกบนถนน กลุ่มหัวรุนแรงภายใต้ชื่อ " The 2560 " (ย่อมาจาก "Organization Against the Order of Operations" โดยมีการบิด hex-ish dorky) ได้ใช้วิธีการที่ชั่วร้ายเพื่อควบคุมอาวุธนิวเคลียร์ทั้งหมดในโลก พวกเขาถือตัวประกันทั่วทั้งโลกและพวกเขามีความต้องการอย่างง่าย ๆ : ย้อนกลับลำดับการปฏิบัติการที่ได้รับการยอมรับหรือการกำจัดใบหน้า (วงเล็บคือการรักษาลำดับความสำคัญของพวกเขา) ระบบใหม่นี้เรียกว่า PSADME (วงเล็บ, การลบ / การเพิ่ม, การหาร / การคูณ, เลขยกกำลัง) และนิพจน์จะประเมินจากขวาไปซ้าย:
a - b - c = a - (b - c) = a + c - b
วันที่ผ่านไปและการเปลี่ยนแปลงอยู่ในระหว่างดำเนินการ ในขณะที่นักคณิตศาสตร์และนักฟิสิกส์กำลังยุ่งอยู่กับการเขียนสมการใหม่ แต่นักวิทยาศาสตร์คอมพิวเตอร์ก็กำลังเผชิญกับงานที่ต้องเปลี่ยนรูปแบบการตีความทางคณิตศาสตร์โดยคอมพิวเตอร์ คุณอยู่ในกลุ่มการเขียนโปรแกรมลับของกบฏซึ่งมีเป้าหมายที่จะทำให้เกิดการทรมานมากสำหรับผู้ครอบครองโลกใหม่ - และโดยบังเอิญคุณจะได้รับการสุ่มเลือกโดย2560และมอบหมายให้สร้างโปรแกรมการคำนวณเกณฑ์มาตรฐาน
ภารกิจของคุณ
เขียนโปรแกรม (หรือฟังก์ชั่น) ที่รับนิพจน์ทางคณิตศาสตร์ (ตัวเลข) เป็นอินพุตคำนวณนิพจน์โดยใช้PSADMEเป็นลำดับของการดำเนินการและแสดงผลลัพธ์ นิพจน์ควรประเมินจากขวาไปซ้ายดังนั้น
เพื่อความง่ายตัวเลขทั้งหมดที่ให้จะเป็นจำนวนเต็มและการคำนวณจะให้ผลลัพธ์ที่เป็นจำนวนเต็ม
กฎและการให้คะแนน
- โปรแกรมควรยอมรับอินพุตที่มีความยาวสูงสุด 128 อักขระ - หากภาษา / แพลตฟอร์มของคุณมีความยาวอินพุตสูงสุดต่ำกว่านั่นเป็นข้อแก้ตัวที่ยอมรับได้
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- รหัสที่ชนะจะถูกเลือกในวันที่ 18 พฤศจิกายน (4 สัปดาห์นับจากวันที่โพสต์นี้)
- โพสต์รหัสที่จะไม่ถือว่าเป็นกอล์ฟที่คุ้มค่า มันเป็นเรื่องสนุก หากคุณมีวิธีที่น่าสนใจในการทำเช่นนี้ แต่ไม่สามารถตีด้วยตัวคุณเอง (หรือโดยวิธีการของคุณ) คุณสามารถโพสต์ได้
ตามปกติรหัสที่ชนะคือรหัสที่มีจำนวนไบต์น้อยที่สุดพร้อมกับโบนัสความบันเทิงบางส่วน:
- -5เพื่อหลีกเลี่ยงการใช้อักขระใด ๆ ในนิพจน์ที่ให้มา: + , - , ( , ) , ^ , * , /
- -5สำหรับการคำนวณใช้เวลามากกว่า 5 นาที (แต่ไม่เกิน 10 นาที) ในการคำนวณบนคอมพิวเตอร์มาตรฐานโดยไม่มีวิธีการที่ชัดเจน (ใช้นาฬิกาหรือลูปที่ไม่จำเป็น) จุดมุ่งหมายคือการโน้มน้าวให้เจ้าเหนือหัวใหม่ที่คุณไม่ได้พยายามขัดขวางการคำนวณการลงโทษของพวกเขา
- - (5 + N)สำหรับข้อความก้าวร้าวโดยตรง (ความยาว N, ไม่รวมช่องว่างนำหน้า / ต่อท้าย) เกี่ยวกับสมาชิก 2560 ที่จะเขียนด้วยสายตาธรรมดาภายในโค้ดของคุณพร้อมคำอธิบายที่น่าขันว่าทำไมมันถึงต้องเป็น ที่นั่น หากถูกลบรหัสจะต้องทำงานไม่ถูกต้อง ใช่คะแนนฟรีสำหรับมูลค่าความบันเทิง
ตัวอย่างและคำอธิบาย
[program] 2 - 2 - 2
2
2 - (2 - 2) = 2
[program] (2 + 2 * 3 + 3) / 3 + 3
4
(4 * 6) / (3 + 3) = 4
[program] 3 + 2 + 1 ^ 3
216
(3 + 2 + 1) ^ 3 = 216
[program] -5^2
25
(-5) ^ 2 = 25
[program] 32 / 8 * 3 - 1
2
32 / (8 * (3 - 1)) = 32/16 = 2
P(SA)(DM)Eนั้นมากขึ้น
1 - 3 + 4 = 1 - 7? จากขวาไปซ้ายจะแนะนำเช่นนั้น แต่นั่นเป็นการเพิ่มการลบก่อนหน้าตรงกันข้ามกับ PSADME ใช่ไหม