บทนำ:
ลองมาดูเครื่องคิดเลขมาตรฐานใน 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
ใช่ไหม