यह चुनौती xkcd से प्रेरित है :
चुनौती:
आप एक बड़ी फ़ाइल (1 गीगाबाइट) की नकल करेंगे। अंतरण दर 10 केबी / सेकंड से 100 एमबी / सेकंड के बीच भिन्न होगी। आपका कार्य फ़ाइल स्थानांतरण के शेष समय का उत्पादन करना है। आउटपुट जैसा दिखना चाहिए:
Time remaining: 03:12 (meaning it's 3 minutes and 12 seconds left)
Time remaining: 123:12 (meaning it's 2 hours, 3 minutes and 12 seconds left)
Time remaining: 02:03:12 (optional output, meaning the same as above)
अग्रणी शून्य को मिनटों और घंटों (वैकल्पिक) के लिए प्रदर्शित करने की आवश्यकता नहीं है, लेकिन इसे सेकंड के लिए दिखाया जाना चाहिए। केवल सेकंड का उपयोग करके शेष समय दिखाना ठीक नहीं है।
फ़ाइल स्थानांतरण:
- अंतरण दर 10 एमबी / सेकंड से शुरू होगी।
- हर सेकंड, 30% संभावना होगी कि हस्तांतरण दर बदल जाएगी
- नई स्थानांतरण दर को श्रेणी में यादृच्छिक रूप से (समान वितरण) उठाया जाना चाहिए
[10 kB/s, 100 MB/s]
, 10 kB / s के चरणों में।
नोट: आपको वास्तव में किसी फ़ाइल की प्रतिलिपि बनाने की आवश्यकता नहीं है।
आप का उपयोग करने के लिए चुन सकते हैं: 1 GB = 1000 MB, 1 MB = 1000 kB, 1 kB = 1000 B
या 1 GB = 1024 MB, 1 MB = 1024 kB, 1 kB = 1024 B
।
आउटपुट:
- आप शुरू करते हैं
01:40
, नहीं01:39
। - आप स्थानांतरण दर में परिवर्तन के बाद का समय प्रदर्शित करते हैं, लेकिन इससे पहले कि कुछ भी उस दर पर स्थानांतरित हो जाए
- सेकंड को पूर्णांक के रूप में प्रदर्शित किया जाना चाहिए, दशमलव नहीं। यह ऊपर / नीचे / निकटतम गोल करने के लिए वैकल्पिक है।
- आपको हर सेकंड स्क्रीन को साफ करना चाहिए, जब तक कि आपकी भाषा में यह असंभव न हो।
- आउटपुट स्थिर होना चाहिए:
Time remaining: 00:00
जब फ़ाइल स्थानांतरण समाप्त हो जाता है।
उदाहरण:
मैंने सभी दशमलव सेकंडों को गोल किया है। मान लें कि नीचे की पंक्तियों को बीच में 1 सेकंड के साथ दिखाया गया है, और स्क्रीन को प्रत्येक के बीच साफ किया गया है:
Time remaining: 01:40 (Transfer rate: 10 MB/s)
Time remaining: 01:39 1 GB - 10 MB
Time remaining: 01:38 1 GB - 2*10 MB
Time remaining: 01:37 1 GB - 3*10 MB
Time remaining: 01:28:54 1 GB - 4*10 MB (TR: 180 kB/s)
Time remaining: 01:28:53 1 GB - 4*10 MB - 180 kB
Time remaining: 01:28:52 1 GB - 4*10 MB - 2*180 kB
Time remaining: 00:13 1 GB - 4*10 MB - 3*180 kB (TR: 75 MB/s)
Time remaining: 00:12 1 GB - 4*10 MB - 3*180 kB - 75 MB
Time remaining: 00:11 1 GB - 4*10 MB - 3*180 kB - 2*75 MB
Time remaining: 00:10 1 GB - 4*10 MB - 3*180 kB - 3*75 MB
Time remaining: 00:09 1 GB - 4*10 MB - 3*180 kB - 4*75 MB
Time remaining: 00:08 1 GB - 4*10 MB - 3*180 kB - 5*75 MB
Time remaining: 14:09:06 1 GB - 4*10 MB - 3*180 kB - 6*75 MB (TR: 10 kB/s)
Time remaining: 14:09:05 1 GB - 4*10 MB - 3*180 kB - 6*75 MB - 10 kB
Time remaining: 00:06 1 GB - 4*10 MB - 3*180 kB - 6*75 MB - 20 kB (TR: 88.110 MB/s)
Time remaining: 00:05
Time remaining: 00:04
Time remaining: 00:03
Time remaining: 00:02
Time remaining: 00:01
Time remaining: 00:00 <- Transfer is finished. Display this.
1:40
(या 1:42
) नहीं 1:39
(या 1:41
)"?
1024
संस्करण का उपयोग कर रहे हैं, तो हम किस चरण आकार का उपयोग कर रहे हैं?
00:00:10
उदाहरण के लिए आउटपुट छोड़ सकते हैं ?