वर्नर विंग की उत्कृष्ट और आकर्षक पुस्तक ए डीपनेस इन द स्काई (जो कि, मैं अत्यधिक अनुशंसा करता हूं 1 ) में, Qeng Ho , एक संस्कृति जो विभिन्न स्टार सिस्टमों को फैलाती है, "दिनों," "महीनों," की कोई धारणा नहीं है। वर्ष, "आदि, और इसलिए एक अद्वितीय टाइमकीपिंग सिस्टम है जो पूरी तरह से सेकंड में समय को मापता है। सबसे अधिक इस्तेमाल किया इकाइयां हैं Ksec (kilosecond), msec (megasecond), और GSEC (gigasecond)। यहाँ पुस्तक की अपनी प्रति से एक आसान चार्ट है (क्योंकि मैं इसे ऑनलाइन नहीं पा सकता):
आप वर्तमान में फाम नुवेन पर उड़ रहे हैं , और आपको " पृथ्वी " नामक एक अजीब, अज्ञात ग्रह से एक संदेश मिला है । 2 वे आपकी तुलना में अलग-अलग समय इकाइयों का उपयोग करते हैं, और आपके कंप्यूटर उनकी पहचान नहीं करते हैं। जहाज के निवासी प्रोग्रामर-आर्कियोलॉजिस्ट के रूप में, आपका काम टाइम-हैंडलिंग कोड को पैच करना है ताकि यह समय की पृथ्वी इकाइयों को पहचान सके।
स्वाभाविक रूप से, चूंकि आप केवल एक और कुछ Ksecs के लिए जुकाम से बाहर हैं, आप अपने कोड को यथासंभव कम करना चाहते हैं ताकि इसे जल्दी से लिखा जा सके। सौभाग्य से, एक इंटरस्टेलर ट्रेडिंग संस्कृति के रूप में, क्यूंग हो की आविष्कार की गई प्रत्येक प्रोग्रामिंग भाषा तक पहुंच है।
इनपुट
इनपुट एक एकल स्ट्रिंग होगा जिसमें एक या एक से अधिक स्थान-पृथक
घटक होंगे । एक घटक एक पूर्णांक संख्या> 0 और ≤ 255 है, तो एक स्थान के रूप में परिभाषित किया गया है, और फिर से एक second
, minute
, hour
, day
, week
, month
,
year
, decade
, या century
, संभवतः बहुवचन (साथ एक अतिरिक्त s
, या
centuries
पिछले मामले के लिए)।
यहां कुछ मान्य उदाहरण इनपुट दिए गए हैं:
10 days 12 hours
1 year
184 centuries 1 second
9 weeks 6 days 2 hours 1 minute 20 seconds
आप इनपुट के बारे में निम्नलिखित मान सकते हैं:
इकाइयों का बहुवचन हमेशा प्रासंगिक संख्या से सहमत होगा।
यदि इनपुट में कई घटक हैं , तो वे हमेशा लंबाई के अवरोही क्रम में रहेंगे।
इस चुनौती के प्रयोजनों के लिए विभिन्न इनपुट इकाइयों का क्या अर्थ है:
unit relative absolute
---------------------------------------
second 1 second 1 second
minute 60 seconds 60 seconds
hour 60 minutes 3600 seconds
day 24 hours 86400 seconds
week 7 days 604800 seconds
month 30 days 2592000 seconds
year 365 days 31536000 seconds
decade 10 years 315360000 seconds
century 10 decades 3153600000 seconds
उत्पादन
यहाँ Qeng Ho इकाइयाँ हैं जिनका आपके कोड को समर्थन करना है:
unit relative absolute
----------------------------------------
second 1 second 1 second
Ksec 1000 seconds 1000 seconds
Msec 1000 Ksecs 1000000 seconds
Gsec 1000 Msecs 1000000000 seconds
अपने कोड का आउटपुट निर्धारित करने के लिए निम्न एल्गोरिथम का उपयोग करें:
सबसे पहले, इनपुट का प्रतिनिधित्व करने वाले कुल समय को जोड़ दें।
सबसे बड़ी Qeng हो इकाई का पता लगाएं जो छोटा है या इनपुट के रूप में उतना ही समय है - अनिवार्य रूप से, सबसे बड़ी इकाई को खोजें जो कम से कम है।
इस इकाई में इनपुट में दिए गए समय की कुल राशि को रूपांतरित करें, और परिणाम को तीन दशमलव स्थानों तक गोल कर दें।
आपके पास निम्नलिखित में से किस विधि का उपयोग करने की आपकी पसंद हो सकती है: ऊपर की ओर, नीचे की ओर, गोल से शून्य की ओर, या round या -∞ की ओर गोल। यदि गोल परिणाम समाप्त होता है 0
, तो आप या तो अनुगामी शून्य को हटा सकते हैं या जितने चाहें रख सकते हैं (या इनपुट के आधार पर दोनों करते हैं)।
गोल परिणाम वास्तव में है 1.000
, तो आप विलक्षण रूप का उपयोग करना चाहिए ( second
, Ksec
, Msec
, Gsec
); अन्यथा, बहुवचन रूप का उपयोग करें ( seconds
,
Ksecs
, Msecs
, Gsecs
)।
कुछ धार-मामलों में, आप उदाहरण के लिए, Ksec की इकाई का उपयोग कर सकते हैं, लेकिन 1000.000 Ksecs का एक गोल परिणाम प्राप्त कर सकते हैं। इस स्थिति में, आप 1000.000 Ksecs
इसके बजाय बस आउटपुट कर सकते
हैं 1 Msec
।
आप हमेशा मान सकते हैं कि इनपुट इकाइयों (शताब्दी, दशक, वर्ष, आदि) के अवरोही क्रम में है; इसके अलावा, किसी भी इकाई के बाद आने वाला घटक हमेशा छोटा होगा (अर्थात, 1 decade 20 years
अमान्य इनपुट है)।
परीक्षण के मामलों
नोट: एक *
अंतर के साथ चिह्नित परिणाम ( ) गोलाई अंतर के कारण एक नगण्य राशि से भिन्न हो सकते हैं।
input output
-------------------------------------------------------------
1 hour 3.600 Ksecs
1 day 86.400 Ksecs
2 weeks 1.210 Msecs
1 year 31.536 Msecs
32 years 1.009 Gsecs *
1 second 1.000 second
1 century 6 decades 5.046 Gsecs *
255 centuries 804.168 Gsecs
2 weeks 6 days 1 hour 19 minutes 4 seconds 1.733 Msecs
1 week 3 days 3 hours 7 minutes 875.220 Ksecs
1 week 4 days 13 hours 46 minutes 40 seconds 1.000 Msec
2 months 2 hours 5.191 Msecs *
16 minutes 39 seconds 999.000 seconds
नियम
- यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है।
1: केवल अगर आपको हार्ड स्कफ़ी पसंद है, तो अवश्य। किस मामले में मैं पहले एक आग को पढ़ने की सलाह देता हूं , जो कि (मेरी राय में) और भी शानदार है।
2: ठीक है, तकनीकी रूप से "ओल्ड अर्थ" का उल्लेख कई बार ए डीपनेस इन द स्काई में किया गया है , लेकिन ...
2 months 2 hours
"2 * 2" घंटे के रूप में व्याख्या करता है।