आपके कार्यक्रम:
आप दो प्रोग्राम (दोनों एक ही भाषा में) लिखेंगे। भंडारण कार्यक्रम एसटीडीआईएन से एक स्ट्रिंग लेता है और इसे कहीं न कहीं लगातार (नीचे देखें) संग्रहीत करता है और फिर त्रुटि के बिना बाहर निकलता है। पुनर्प्राप्ति कार्यक्रम कोई इनपुट नहीं लेता है, जो स्ट्रिंग संग्रहीत किया गया था, उसे पुनर्प्राप्त करता है और इसे STDOUT में प्रिंट करता है।
उद्देश्य का उद्देश्य परीक्षण:
आपको अपनी स्थानीय मशीन पर संग्रहण कार्यक्रम चलाने में सक्षम होना चाहिए, फिर अपनी स्थानीय मशीन को पावर-साइकिल करें, फिर स्थानीय मशीन पर पुनर्प्राप्ति कार्यक्रम को कॉल करें। जब तक आप इस रिबूट परीक्षण को पास नहीं कर लेते तब तक आप (वेब पर भी) स्ट्रिंग को स्टैश कर सकते हैं।
परीक्षण के मामलों:
भंडारण फिर पुनर्प्राप्ति:
echo foo | Store
Retrieve
foo
बार-बार स्टोर को अधिलेखित करना चाहिए (एक सेट () विधि की तरह):
echo foo | Store
echo bar | Store
Retrieve
bar
बार-बार पुनर्प्राप्ति गैर-विनाशकारी है (जैसे (प्राप्त) विधि):
echo foo | Store
Retrieve
foo
Retrieve
foo
भंडारण के किसी भी आह्वान से पहले पुनर्प्राप्ति:
आपको इस बारे में चिंता करने की आवश्यकता नहीं है। आपका पुनर्प्राप्ति कार्यक्रम मान सकता है कि स्टोरेज प्रोग्राम पिछले समय किसी बिंदु पर चलाया गया है।
इनपुट / आउटपुट लचीलापन।
लोगों ने मुझे सख्त STDIN / STDOUT से मानक IO नियमों तक इसका विस्तार करने के लिए कहा है। मैं नहीं कर सकता क्योंकि यह बहुत अधिक खामियों को पेश करेगा। कुछ मानक IO विकल्पों में पहले से ही एक स्थिर तरीके से संग्रहीत इनपुट होता है, उदाहरण के लिए "प्रोग्राम फ़ाइल से इनपुट ले सकते हैं"। मैं केवल सख्त STDIN और STDOUT की तुलना में अधिक लचीला होना चाहता हूं, लेकिन बाढ़ के द्वार को खोले बिना।
मानक IO नियमों के धागे से मैं चेरी-चुन रहा हूं जो चुनौती नहीं तोड़ते हैं:
यदि आप चाहें तो प्रोग्राम GUI प्रॉम्प्ट और कमांड-लाइन प्रॉम्प्ट के माध्यम से इनपुट ले सकते हैं
कार्यक्रम इसे स्क्रीन पर प्रदर्शित करके आउटपुट कर सकते हैं इसमें जीयूआई संवाद शामिल हैं
कार्यक्रम STDERR को आउटपुट कर सकते हैं लेकिन फिर भी वास्तव में त्रुटियों को नहीं फेंक सकते।
यदि आप एक वैकल्पिक का उपयोग करते हैं तो यह उपयोगकर्ता-इंटरैक्टिव होना चाहिए। उपयोगकर्ता को आपके प्रोग्राम के लिए उनके इनपुट को पाइप करने के अलावा कोई अन्य काम नहीं करना चाहिए, इसे अपने प्रोग्राम के प्रांप्ट में टाइप करना, या अपने प्रोग्राम के कमांड-लाइन-आर्ग के रूप में इनपुट टाइप करना। स्क्रीन पर प्रदर्शित आउटपुट को देखने या STDOUT या STDERR को भेजने के लिए उपयोगकर्ता को आपके पुनः प्राप्त कार्यक्रम को चलाने के अलावा कुछ नहीं करना चाहिए।
अनुमत मान्यताएँ:
- आपके दो प्रोग्राम एक ही डायरेक्टरी में चलाए जाएंगे
- आपके कार्यक्रमों में उस निर्देशिका के लिए पढ़ने-लिखने की अनुमति है
- आपके द्वारा बनाई गई फ़ाइलें रिबूट से बच जाएंगी (टेम्प अस्थायी में नहीं)
- एक अनुगामी न्यूलाइन जो स्ट्रिंग का हिस्सा नहीं थी, की अनुमति है। कोई अन्य अनुगामी व्हॉट्सएप नहीं
यह कोड-गोल्फ है, और आपका स्कोर दोनों कार्यक्रमों से बाइट्स का योग है।
Store
?
echo $@>x
औरcat x
वैध है?