รับสตริงของ N, S, E และ W, ส่งลูกปืน (มุมตามเข็มนาฬิกาจากทิศเหนือเป็นองศา), แก้ไขให้ถูกต้องถึงทศนิยม 5 ตำแหน่ง
ในรูปแบบเข็มทิศแบบดั้งเดิมสตริงจะประกอบด้วยอักขระเพียง 2 ตัวเท่านั้น (เช่น NNW หรือ ESE) ที่นี่คุณยังจะต้องยอมรับสตริงที่มีทั้งหมด 4 (เช่น WNNNSE) การใช้สัญลักษณ์เพียง 2 ตัวช่วยให้มนุษย์เข้าใจความหมายได้โดยสัญชาตญาณ การอนุญาตให้ใช้ 4 สัญลักษณ์ทำให้การอ่านเป็นเรื่องที่น่ากลัว แต่ช่วยให้สามารถอธิบายการแบกได้อย่างแม่นยำ
(ตามที่ระบุไว้ในความคิดเห็นโดยผู้ใช้235,712มันปรากฎว่าคุณสามารถพิสูจน์ได้ว่าสำหรับแบริ่งใด ๆ ที่ได้รับสตริงสัญลักษณ์ 4 จะมีความยาวเท่ากับสตริงสัญลักษณ์ 2 ดังนั้นฉันได้ท้าทายนี้บนสมมติฐานที่ผิดพลาด หวังว่าการขาดวัตถุประสงค์เชิงปฏิบัตินี้จะไม่เบี่ยงเบนความสนใจของคุณไปกับความท้าทาย ... )
วิธีการที่แน่นอนมีการอธิบายด้านล่างและเทียบเท่ากับสัญกรณ์ดั้งเดิม (มันขยายตัวมากกว่าที่จะเปลี่ยนมัน)
อินพุต
NESW
การป้อนข้อมูลที่เป็นสายเดียวที่มีเพียงตัวละคร- อินพุตอาจเป็นลำดับอักขระหากคุณต้องการโดยไม่รวมการประมวลผลล่วงหน้า ตัวอย่างเช่น
[N, [E, [S, [W]]]]
ไม่อนุญาตให้ใช้รายการซ้อนเพื่อช่วยในการประมวลผลคำสั่ง - ไม่อนุญาตให้ใช้อักขระอื่น คุณอาจจะไม่ใช้สตริงของแทน
1234
NESW
เอาท์พุต
- ผลลัพธ์จะต้องเป็นตัวเลขทศนิยมหรือการแสดงสตริงของหนึ่ง (ไม่ใช่เหตุผล / เศษส่วน)
- ไม่จำเป็นต้องแสดงค่าศูนย์ต่อท้าย ถ้าแบริ่งเป็น
9.00000
แล้วเอาท์พุท9
ยังนับว่าถูกต้องถึงทศนิยม 5 ตำแหน่ง - เอาต์พุตอยู่ในช่วง [0, 360) นั่นคือรวมถึง 0 แต่ไม่รวม 360
- ความถูกต้องถูกตรวจสอบโดยการปัดเศษผลลัพธ์เป็นทศนิยม 5 ตำแหน่ง ถ้าลูกปืนคือ 0.000005 รอบนี้จะเป็น 0.00001 เอาต์พุต 0.00001 และ 0.000005 ทั้งคู่ถูกต้อง
- เอาท์พุทในสัญกรณ์ทางวิทยาศาสตร์สำหรับบางอินพุตเป็นที่ยอมรับ ยกตัวอย่างเช่นแทน
1e-5
0.00001
การแปลง
- เข็มทิศจุด
N
เดียวE
,S
และ,W
สอดคล้องกับ 0, 90, 180 และ 270 องศาตามลำดับ - การเตรียมสิ่งเหล่านี้ให้กับสตริงจะส่งผลให้ตลับลูกปืนที่แบ่งตลับลูกปืนของอักขระเดี่ยวและตลับลูกปืนของสายอักขระเดิม
- แบริ่งแบ่งครึ่งที่ใกล้เคียงที่สุดที่เป็นไปได้ถูกเลือกไว้ดังนั้น NE จึงเป็น 45 องศาไม่ใช่ 225 องศา
- สิ่งนี้ไม่ชัดเจนยกเว้นมุมที่จะแบ่งออกเป็น 180 องศา ดังนั้น
NS
,SN
และWE
,EW
สอดคล้องกับแบริ่งที่ไม่ได้กำหนดและอินพุตจะไม่สิ้นสุดในสิ่งเหล่านี้ อย่างไรก็ตามอาจปรากฏที่ใดก็ได้ในสตริงอินพุตเนื่องจากจะไม่มีความกำกวม - หากอักขระสองตัวสุดท้ายเหมือนกันตัวละครสุดท้ายจะซ้ำซ้อนเนื่องจากการแบ่งจะกลับมาเป็นเหมือนเดิม ตั้งแต่นี้จะเพิ่มอะไรในสัญกรณ์รหัสของคุณไม่จำเป็นต้องจัดการนี้ ดังนั้น
NN
,EE
และSS
,WW
สอดคล้องกับแบริ่งที่ไม่ได้กำหนดและอินพุตจะไม่สิ้นสุดในสิ่งเหล่านี้ อย่างไรก็ตามอาจปรากฏที่ใดก็ได้ในสตริงป้อนข้อมูล
ตัวอย่าง
N: 0
E: 90
S: 180
SE: halfway between S and E: 135
NSE: halfway between N and SE: 67.5
NNSE: halfway between N and NSE: 33.75
NNNSE: halfway between N and NNSE: 16.875
NNNNSE: halfway between N and NNNSE: 8.4375
กรณีทดสอบ
การส่งจะใช้ได้ก็ต่อเมื่อมันให้ผลลัพธ์ที่ถูกต้องสำหรับทุกกรณีทดสอบ โปรดทราบว่ากรณีทดสอบจะผลักดันขีด จำกัด ของสิ่งที่สามารถจัดการได้ด้วยความแม่นยำสองเท่า สำหรับภาษาที่มีค่าเริ่มต้นเป็นความแม่นยำเดียวคุณอาจต้องใช้ไบต์เพื่อระบุความแม่นยำสองเท่าเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง
ผลลัพธ์ของเคสทดสอบจะแสดงเป็นทศนิยม 5 ตำแหน่งและเพื่อความแม่นยำโดยพลการ ทั้งสองเป็นผลลัพธ์ที่ถูกต้อง
WNE 337.5 337.5
WEN 337.5 337.5
WEWEWEWEWEWEWEWEWEWEWEN 330.00001 330.000007152557373046875
NESWNESWNESWNESWNESWNESWNESW 90 89.99999932944774627685546875
NNNNNNNNNNNNNNNNNNNNNNNE 0.00001 0.0000107288360595703125
NNNNNNNNNNNNNNNNNNNNNNNW 359.99999 359.9999892711639404296875
SNNNNNNNNNNNNNNNNNNNNNNNE 90.00001 90.00000536441802978515625
SNNNNNNNNNNNNNNNNNNNNNNNW 269.99999 269.99999463558197021484375
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟ คะแนนคือความยาวของซอร์สโค้ดในหน่วยไบต์และการชนะที่สั้นที่สุด
การคุยโวโอ้อวด
ฉันทำผิดที่คิดว่า "North by North West" เป็นทิศทางเข็มทิศที่ถูกต้อง ความผิดพลาดที่มีความสุขเพราะมันนำไปสู่ความคิดที่ท้าทาย แต่จากนั้นฉันค้นพบจากหน้า Wikipedia :
"ชื่อเรื่องของภาพยนตร์ Alfred Hitchcock 1959 ทางตะวันตกเฉียงเหนือของ Northwest ไม่ใช่จุดกำกับทิศทางของเข็มทิศ 32 ลม แต่ ภาพยนตร์มีการอ้างอิงถึง Northwest Airlines "
นอกจากนี้ยังปรากฎว่าวิธีการที่ใช้สำหรับความท้าทายนี้สอดคล้องกับจุดเข็มทิศดั้งเดิมจนถึงและรวมถึงเข็มทิศ 16 จุดเท่านั้น เข็มทิศ 32 ลมที่อธิบายไว้ในหน้านั้นมีความแตกต่างกันเล็กน้อยและฉันมองข้ามการมีอยู่ของมันสำหรับความท้าทายนี้
ในที่สุดสำหรับทุกคนที่คิดว่าฉันควรใช้ "ตะวันออกเฉียงใต้" แทน "ตะวันออกเฉียงใต้".
WNNNSE
323.4375
ดูหัวข้อตัวอย่างสำหรับคำแนะนำที่จะนำไปใช้ในทางเดียวกันกับกรณีนี้
f(N,N,N,S,E)
โอเคไหม
WNNNSE
<= ผลลัพธ์ของรายการตัวอย่างนี้จะเริ่มต้นที่โพสต์ของคุณเมื่อใด มันฟังดูไม่ถูกต้องสำหรับฉัน แต่มันยากที่จะบอก