परिचय
समय भ्रमित कर रहा है। एक मिनट के लिए साठ सेकंड, एक घंटे से साठ मिनट, एक दिन के चौबीस घंटे (और उस pesky am / pm का उल्लेख नहीं करने के लिए!)।
आजकल इस तरह की मूर्खता के लिए कोई जगह नहीं है, इसलिए हमने एकमात्र समझदार विकल्प अपनाने का फैसला किया है: दशमलव के दिन! यह कहना है, प्रत्येक दिन को 1 पूरी इकाई माना जाता है, और कुछ भी छोटा उस दिन के दशमलव अंश के रूप में लिखा जाता है। इसलिए, उदाहरण के लिए: "12:00:00" को "0.5" के रूप में लिखा जाएगा, और "01:23:45" को "0.058159" के रूप में लिखा जा सकता है।
क्योंकि नई प्रणाली के लिए उपयोग होने में समय लगेगा, आपको एक प्रोग्राम लिखने का काम सौंपा गया है जो दोनों दिशाओं में उनके बीच परिवर्तित हो सकता है।
चुनौती
अपनी पसंद की भाषा में एक कार्यक्रम लिखें, जिसने "hh: mm: ss" के ISO-8601 प्रारूप में एक आधुनिक समय दिया, समकक्ष दशमलव अंश इकाई को लौटाएगा। इसी तरह, दशमलव अंश को देखते हुए, कार्यक्रम को शुरू में निर्दिष्ट आधुनिक प्रारूप में समय लौटाना चाहिए।
आप निम्नलिखित अनुमान लगा सकते हैं:
- आधुनिक समय इनपुट और आउटपुट "00:00:00" से "24:00:00" तक हो सकता है
- दशमलव समय इनपुट और आउटपुट "0" से लेकर "1" तक हो सकता है, और कम से कम 5 दशमलव स्थानों (जैसे "0.12345") को स्वीकार / आउटपुट करने में सक्षम होना चाहिए। अधिक परिशुद्धता स्वीकार्य है
- कार्यक्रम को यह जानने में सक्षम होना चाहिए कि इनपुट के आधार पर किस रूपांतरण दिशा में प्रदर्शन करना है
- आप समय संबंधी कार्यों / पुस्तकालयों का उपयोग नहीं कर सकते
विजेता को सबसे कम कोड द्वारा निर्धारित किया जाएगा जो मानदंडों को पूरा करता है। उनका चयन कम से कम 7 दशमलव दिन इकाइयों में किया जाएगा, या यदि / जब पर्याप्त प्रस्तुतियाँ हो गई हों।
उदाहरण
यहां उदाहरण के रूप में उपयोग किए जाने वाले जावास्क्रिप्ट कोड का खराब (जानबूझकर) लिखा गया टुकड़ा है:
function decimalDay(hms) {
var x, h, m, s;
if (typeof hms === 'string' && hms.indexOf(':') > -1) {
x = hms.split(':');
return (x[0] * 3600 + x[1] * 60 + x[2] * 1) / 86400;
}
h = Math.floor(hms * 24) % 24;
m = Math.floor(hms * 1440) % 60;
s = Math.floor(hms * 86400) % 60;
return (h > 9 ? '' : '0') + h + ':' + (m > 9 ? '' : '0') + m + ':' + (s > 9 ? '' : '0') + s;
}
decimalDay('02:57:46'); // 0.12344907407407407
decimalDay('23:42:12'); // 0.9876388888888888
decimalDay(0.5); // 12:00:00
decimalDay(0.05816); // 01:23:45