एन, एस, ई और डब्ल्यू की एक स्ट्रिंग को देखते हुए, 5 दशमलव स्थानों के लिए सही एक असर (डिग्री में उत्तर से कोण)।
में पारंपरिक कम्पास अंकन , एक स्ट्रिंग केवल 2 (NNW या ESE) की तरह इन पात्रों की से मिलकर बना है। यहां आपको उन स्ट्रिंग्स को भी स्वीकार करना होगा जिनमें सभी 4 (जैसे WNNNSE) शामिल हैं । केवल 2 प्रतीकों का उपयोग करने से मनुष्य सहजता से अर्थ को समझ सकता है। 4 प्रतीकों की अनुमति देना पढ़ने के लिए भयानक बनाता है, लेकिन किसी दिए गए सटीकता के लिए असर का वर्णन करने के छोटे तरीकों की अनुमति देता है।
(जैसा कि user2357112 द्वारा टिप्पणियों में बताया गया है , यह पता चलता है कि आप किसी भी दिए गए असर के लिए यह साबित कर सकते हैं कि 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
स्कोरिंग
यह कोड-गोल्फ है । स्कोर बाइट्स में स्रोत कोड की लंबाई है, और सबसे छोटी जीत है।
पांडित्य-प्रदर्शन
मैंने यह सोचने की गलती की कि "नॉर्थ बाय नॉर्थ वेस्ट" एक वैध कम्पास दिशा थी। एक खुश गलती, क्योंकि इसने एक चुनौती विचार का नेतृत्व किया, लेकिन मैंने तब विकिपीडिया पृष्ठ से खोजा :
"अल्फ्रेड हिचकॉक 1959 की फिल्म, नॉर्थवेस्ट द्वारा उत्तर, वास्तव में 32-विंड कम्पास पर एक दिशा बिंदु नहीं है, लेकिन फिल्म में नॉर्थवेस्ट एयरलाइंस का संदर्भ है। ”
यह भी पता चला है कि इस चुनौती के लिए इस्तेमाल की जाने वाली विधि केवल 16 बिंदु वाले कम्पास के साथ पारंपरिक कम्पास बिंदुओं के अनुरूप है। उस पृष्ठ पर वर्णित 32-पवन कम्पास सूक्ष्म रूप से अलग है और मैंने इस चुनौती के लिए अपने अस्तित्व को आसानी से अनदेखा कर दिया है।
अंत में, जो कोई भी सोचता है कि मुझे "दक्षिण पूर्व" के बजाय "दक्षिण पूर्व" का उपयोग करना चाहिए,।
WNNNSEलिए आउटपुट होगा 323.4375। वॉकथ्रू के लिए उदाहरण अनुभाग देखें जो इस मामले में उसी तरह लागू होगा।
f(N,N,N,S,E)ठीक है?
WNNNSE<= आपके पोस्ट के प्रारंभ में इस उदाहरण प्रविष्टि के लिए आउटपुट क्या होगा? यह मेरे लिए अमान्य लगता है, लेकिन यह बताना मुश्किल है।