यह चुनौती उबंटू स्टैक एक्सचेंज में इस जवाब से प्रेरित है ।
पहचान
पाइप के साथ विंडोज एमई स्क्रीनसेवर याद रखें ? उदासीनता को वापस लाने का समय!
चुनौती
आपको एक प्रोग्राम या फ़ंक्शन लिखना चाहिए जो स्क्रीनसेवर के ASCII प्रतिनिधित्व को आउटपुट करेगा। स्क्रीनसेवर में एक एकल पाइप होना चाहिए जो अर्ध-यादृच्छिक दिशाओं में बढ़ेगा।
पाइप की शुरुआत को स्क्रीन की किसी भी सीमा पर बेतरतीब ढंग से रखा जाएगा और पाइप का टुकड़ा सीमा से सीधा होना चाहिए (कोने के पहले-पाइप या तो क्षैतिज या ऊर्ध्वाधर हो सकते हैं)। प्रत्येक टिक उस दिशा में बढ़ेगा जहां वह एक 80%अवसर पर (क्षैतिज / ऊर्ध्वाधर) का सामना कर रहा है या एक 20%मौका पर एक कोने ले जाएगा ।
पाइप का प्रतिनिधित्व
पाइप बनाने के लिए, 6 यूनिकोड वर्णों का उपयोग किया जाएगा
─ \u2500 horizontal pipe
│ \u2502 vertical pipe
┌ \u250C upper left corner pipe
┐ \u2510 upper right corner pipe
└ \u2514 lower left corner pipe
┘ \u2518 lower right corner pipe
इनपुट
कार्यक्रम / फ़ंक्शन इनपुट के 3 मान लेगा, जिसे फ़ंक्शन मापदंडों के माध्यम से इकट्ठा किया जा सकता है या उपयोगकर्ता को संकेत दिया जा सकता है।
- टिक की मात्रा
- स्क्रीन की चौड़ाई
- स्क्रीन की ऊंचाई
टिक की मात्रा
हर टिक के लिए, स्क्रीन पर पाइप का एक टुकड़ा जोड़ा जाएगा। यदि वे एक ही स्थिति में अंडे देते हैं तो पाइप पुराने पाइप के टुकड़े को ओवरराइट कर देगा।
उदाहरण के लिए, आकार 3x3 की एक स्क्रीन लें
ticks == 3
─┐
┘
ticks == 4
─┐
└┘
ticks == 5
│┐
└┘
जब भी एक पाइप स्क्रीन से बाहर निकलता है, जैसा कि पिछले उदाहरण में 5 टिक्स में है, तो एक नया पाइप एक यादृच्छिक सीमा पर स्पॉन करेगा। उदाहरण के लिए:
ticks == 6
│┐
└┘
─
नए पाइप में क्षैतिज या ऊर्ध्वाधर होने का 50% मौका होना चाहिए।
स्क्रीन की चौड़ाई / ऊँचाई
स्क्रीन की चौड़ाई और ऊंचाई को एक ही मूल्य में जोड़ा जा सकता है अगर वह आपकी पसंद की भाषा में बेहतर हो। स्क्रीन की चौड़ाई और ऊँचाई का मान हमेशा न्यूनतम 1 और 255 का अधिकतम मान होगा। यदि आपकी पसंद की भाषा कंसोल या आउटपुट स्क्रीन का समर्थन करती है, जो 255x255 वर्णों की ग्रिड से छोटी है, तो आप मान सकते हैं कि चौड़ाई और ऊँचाई होगी अपने कंसोल की सीमाओं से अधिक नहीं। (उदाहरण: विंडोज 80x25 cmd विंडो)
उत्पादन
आपके प्रोग्राम / फ़ंक्शन का आउटपुट स्क्रीन पर प्रिंट होना चाहिए, या किसी फ़ंक्शन से लौटाया जाना चाहिए। आपके कार्यक्रम के हर रन के लिए, पाइप का एक अलग सेट उत्पन्न किया जाना चाहिए।
परीक्षण के मामलों
निम्नलिखित परीक्षण मामले वैध आउटपुट के सभी यादृच्छिक उदाहरण हैं
f(4, 3, 3)
│
─┘
│
f(5, 3, 3)
│
─┘┌
│
f(6, 3, 3)
─│
─┘┌
│
f(7, 3, 3)
──
─┘┌
│
जाहिर है, जो अधिक टिक गया है, वह आपके कार्यक्रम की वैधता को साबित करने के लिए कठिन हो जाता है। इसलिए, अपने आउटपुट को चलाने का एक gif पोस्ट करना पसंद किया जाएगा। यदि यह संभव नहीं है, तो कृपया अपने कोड का एक संस्करण पोस्ट करें जिसमें आउटपुट प्रिंट करना शामिल है। जाहिर है, यह आपके स्कोर की ओर नहीं गिना जाएगा।
नियम
- यह कोड-गोल्फ है , बाइट्स की सबसे कम राशि जीतती है
- मानक खामियां लागू होती हैं
- यदि आप अपने स्रोत कोड में यूनिकोड पाइप वर्णों का उपयोग करते हैं, तो आप उन्हें एकल बाइट के रूप में गिन सकते हैं
यह काफी कठिन चुनौती है जिसे संभवत: कई रचनात्मक तरीकों से हल किया जा सकता है, आपको और अधिक मौखिक भाषा में उत्तर लिखने के लिए प्रोत्साहित किया जाता है, हालांकि पहले से ही छोटे पलायन में उत्तर हैं। यह प्रति भाषा सबसे कम उत्तरों की एक सूची बनाएगा। फैंसी रंगीन gifs के लिए बोनस upvotes;)
हैप्पी गोल्फिंग!
अस्वीकरण: मुझे पता है कि यूनिकोड वर्ण ASCII नहीं हैं, लेकिन एक बेहतर नाम की कमी के कारण मैं इसे ASCII कला कहता हूं। सुझावों का स्वागत है :)



