บทนำ:
ลองมาดูเครื่องคิดเลขมาตรฐานใน Windows:
สำหรับความท้าทายนี้เราจะดูที่ปุ่มต่อไปนี้เท่านั้นและไม่สนใจสิ่งอื่น:

7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
ท้าทาย:
อินพุต:
คุณจะได้รับสองอินพุต:
- หนึ่งคือสิ่งที่บ่งบอกถึงการหมุนเพิ่มทีละ 90 องศา
- อีกรายการหนึ่งคือรายการพิกัดที่แสดงถึงปุ่มที่กดบนเครื่องคิดเลขแบบหมุน
ขึ้นอยู่กับอินพุตแรกเราหมุนเค้าโครงดังกล่าวข้างต้นตามเข็มนาฬิกาโดยเพิ่มทีละ 90 องศา ดังนั้นถ้าอินพุต0 degreesมันยังคงเป็นอยู่ แต่ถ้าอินพุต270 degreesนั้นจะหมุนตามเข็มนาฬิกาสามครั้ง (หรือทวนเข็มนาฬิกาหนึ่งครั้ง) นี่คือการจัดวางที่เป็นไปได้สี่อย่าง:
Default / 0 degrees:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
90 degrees clockwise:
0 1 4 7
0 2 5 8
. 3 6 9
+ - * /
180 degrees:
+ . 0 0
- 3 2 1
* 6 5 4
/ 9 8 7
270 degrees clockwise / 90 degrees counterclockwise:
/ * - +
9 6 3 .
8 5 2 0
7 4 1 0
การป้อนข้อมูลที่สองคือรายการของพิกัดในรูปแบบที่เหมาะสมใด ๆ† ตัวอย่างเช่น (0 จำนวนเต็ม 2D จำนวนเต็มอาร์เรย์):
[[1,2],[2,3],[0,3],[1,0],[1,1]]
เอาต์พุต:
เราแสดงผลรวมทั้งผลลัพธ์ (และเครื่องหมายเท่ากับ=)
ตัวอย่าง:
ดังนั้นถ้าอินพุตเป็น270 degreesและ[[1,2],[2,3],[0,3],[1,0],[1,1]]เอาต์พุตจะกลายเป็น:
517*6=3102
กฏท้าทาย:
- †ปัจจัยการผลิตสามารถอยู่ในรูปแบบที่เหมาะสมใด ๆ อินพุตแรกสามารถ
0-3,1-4,A-D,0,90,180,270ฯลฯ การป้อนข้อมูลที่สองอาจจะเป็น 0 การจัดทำดัชนี 2D อาร์เรย์ 1 การจัดทำดัชนีอาร์เรย์ 2D, สตริง, รายการจุดวัตถุ ฯลฯ การโทรของคุณ เป็นไปได้ที่จะสลับค่าพิกัด x และ y เมื่อเทียบกับอินพุตตัวอย่างที่กำหนด โปรดระบุรูปแบบการป้อนข้อมูลที่คุณใช้ในคำตอบของคุณ! - คุณได้รับอนุญาตให้เพิ่มช่องว่าง (เช่น
517 * 6 = 3102) ถ้าคุณต้องการ - คุณได้รับอนุญาตให้เพิ่มเลขศูนย์ต่อท้ายเครื่องหมายจุลภาคได้สูงสุดสามตัว (เช่น
3102.0/3102.00/3102.000แทน3102หรือ0.430แทน0.43) - คุณไม่ได้รับอนุญาตให้เพิ่มวงเล็บในผลลัพธ์ดังนั้น
(((0.6+4)-0)/2)/4=0.575ไม่ใช่เอาต์พุตที่ถูกต้อง - คุณได้รับอนุญาตให้ใช้สัญลักษณ์ตัวถูกดำเนินการอื่น ๆ สำหรับภาษาของคุณ ดังนั้น
×หรือ·แทน*; หรือ÷แทน/; เป็นต้น - เนื่องจากเครื่องคิดเลขคำนวณโดยอัตโนมัติเมื่อป้อนตัวถูกดำเนินการคุณควรละเว้นตัวดำเนินการที่สำคัญกว่า! ดังนั้น
10+5*3จะส่งผลให้45((10+5)*3=45) ไม่25(10+(5*3)=25)
(เช่น10→การ+→การ5→การ*(ตอนนี้ 15 แสดงในจอแสดงผล) →การ3→การ=(มันจะแสดงคำตอบ45)) โปรดระลึกไว้เสมอเมื่อใช้evalและฟังก์ชั่นที่คล้ายกันกับผลรวม - จะไม่มีกรณีทดสอบใด ๆ สำหรับการหารด้วย 0
- จะไม่มีกรณีทดสอบใด ๆ ที่มีทศนิยมมากกว่าสามหลักเป็นผลลัพธ์ดังนั้นไม่จำเป็นต้องปัดเศษผลลัพธ์
- จะไม่มีกรณีทดสอบใด ๆ ที่ตัวถูกดำเนินการหลายตัวติดตามซึ่งกันและกันหรือจุดสองจุดที่ติดตามกัน
- จะไม่มีกรณีทดสอบใด ๆ สำหรับจำนวนลบ เครื่องหมายลบ (
-) จะใช้เป็นตัวถูกดำเนินการเท่านั้นไม่ใช่เชิงลบ - จะไม่มีกรณีทดสอบใด ๆ ที่
.##ไม่มีหมายเลขนำหน้าเครื่องหมายจุลภาค (เช่น2+.7จะไม่เป็นกรณีทดสอบที่ถูกต้อง แต่2+0.7อาจเป็นได้)
กฎทั่วไป:
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ
อย่าปล่อยให้ภาษาที่ใช้รหัสกอล์ฟกีดกันคุณไม่ให้โพสต์คำตอบด้วยภาษาที่ไม่ได้เป็น codegolfing พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ ' - กฎมาตรฐานจะใช้สำหรับคำตอบของคุณดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชัน / เมธอดพร้อมพารามิเตอร์ที่เหมาะสมโปรแกรมเต็มรูปแบบ การโทรของคุณ
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
- หากเป็นไปได้โปรดเพิ่มลิงค์พร้อมทดสอบรหัสของคุณ
- นอกจากนี้โปรดเพิ่มคำอธิบายหากจำเป็น
กรณีทดสอบ:
Input: 270 degrees & [[1,2],[2,3],[0,3],[1,0],[1,1]]
Output: 517*6=3102
Input: 90 degrees & [[3,1],[0,0],[0,1],[3,3],[2,0],[0,3],[0,0],[0,2],[3,0],[2,1]]
Output: 800/4+0.75=200.75
Input: 0 degrees & [[0,0],[1,0],[2,0],[3,0],[1,2],[2,1],[2,2]]
Output: 789/263=3
Input: 180 degrees & [[3,0],[1,0],[1,2],[0,0],[3,2],[0,1],[2,0],[0,3],[2,1],[0,3],[3,2]]
Output: 0.6+4-0/2/4=0.575
1+-*/+-*/2จะให้0.5ในเครื่องคิดเลข Windows (10)
[1,3],
2+.7ใช่ไหม