आपकी चुनौती एक अनंत लोडिंग स्क्रीन बनाने की है, जो इस तरह दिखती है:
या, अधिक विशिष्ट होने के लिए:
- कोई इनपुट न लें।
- आउटपुट
Loading...
, एक अनुगामी स्थान के साथ, लेकिन कोई अनुगामी न्यूलाइन नहीं। - वर्ण के माध्यम से असीम चक्र
|
,/
,-
और\
: हर 0.25 सेकंड, क्रम में अगला के साथ पिछले एक के ऊपर लिख। जब तकLoading...
अपरिवर्तित रहे , आप केवल अंतिम वर्ण को अधिलेखित कर सकते हैं, या पूरी पंक्ति को हटा सकते हैं और पुनः लिख सकते हैं।
नियम
- आउटपुट टेक्स्ट को बिल्कुल निर्दिष्ट रूप में देखना चाहिए। अनुगामी newlines / रिक्त स्थान स्वीकार्य हैं।
- शुरू में आउटपुट दिखाने से पहले आपको 0.25 सेकंड तक इंतजार नहीं करना चाहिए - प्रोग्राम के चलते ही पहला फ्रेम प्रिंट होना चाहिए।
- आपका कार्यक्रम अनिश्चित काल तक चलने में सक्षम होना चाहिए।उदाहरण के लिए, यदि आप फ़्रेम के लिए काउंटर का उपयोग करते हैं, तो काउंटर को कभी भी आपकी भाषा में अधिकतम से अधिक त्रुटि का कारण नहीं होना चाहिए।
- यद्यपि प्रत्येक "फ्रेम" के बीच की प्रतीक्षा अवधि 0.25 सेकंड होनी चाहिए, जाहिर है यह कभी भी सटीक नहीं होगा - 10% या तो त्रुटि मार्जिन की अनुमति है।
- आप एक फ़ंक्शन सबमिट कर सकते हैं, लेकिन इसे प्रिंट करना होगा
stdout
। - आप एक गैर-कंसोल (लेकिन अभी भी पाठ-आधारित) वातावरण में एक उत्तर प्रस्तुत कर सकते हैं, जब तक यह लोडिंग एनीमेशन का उत्पादन करने में सक्षम है।
- यह कोड-गोल्फ है , इसलिए सबसे छोटा समाधान (बाइट्स में) जीतता है। स्टैंडर्ड कोड-गोल्फ लूपहोल्स लागू होते हैं।
- यदि संभव हो, तो कृपया कार्रवाई में अपनी लोडिंग स्क्रीन का gif प्रदान करें।
उदाहरण
यहाँ C ++ कोड है जिसका उपयोग मैंने उदाहरण (ungolfed) बनाने के लिए किया था:
#include <iostream>
#include <string>
#include <thread>
using namespace std;
int main() {
string cycle = "|/-\\";
int i = 0;
cout << "Loading... ";
while (true) {
// Print current character
cout << cycle[i];
// Sleep for 0.25 seconds
this_thread::sleep_for(chrono::milliseconds(250));
// Delete last character, then increase counter.
cout << "\b";
i = ++i % 4;
}
}
सर्वश्रेष्ठ गोल्फर जीत सकते हैं!