मैं एक जन्मदिन की पार्टी के लिए दूसरे दिन एक कद्दू पैच के माध्यम से चल रहा था, और कद्दू दाखलताओं को चक्करदार, छोरों और ऑफशूट के साथ एक निफ्टी पैटर्न बनाने पर ध्यान दिया। हम यहाँ कुछ ASCII कला के साथ अनुकरण करने जा रहे हैं।
(())
\
p--q p-----q
/ \ / \
(()) b--d (())
बेल निर्माण नियम
- केवल एक मुख्य बेल है, जो केवल
\ / - p q b d
पात्रों से बना है । - बेल केवल स्क्रीन के बाईं ओर से दाईं ओर यात्रा करती है। दूसरे शब्दों में, मान लीजिए कि आप एक चींटी हैं जो बाएं-सबसे बेल चरित्र पर शुरू होती है। जब आप मुख्य बेल पर अगले आसन्न चरित्र की ओर बढ़ते हैं , तो आपको एक कॉलम को दाईं ओर ले जाना चाहिए - कभी भी बाईं ओर नहीं।
- जब बेल दिशा बदलती है, तो
p q b d
लूप को अनुकरण करने के लिए पात्रों में से एक की आवश्यकता होती है।p
पूर्व में उत्तर पूर्व यात्रा लताओं मिलती है,q
दक्षिण-पूर्व में पूर्व के लिए,b
दक्षिण-पूर्व से पूर्व की ओर है, औरd
पूर्व से पूर्वोत्तर के लिए। ध्यान दें कि पत्र का "लूप" क्षैतिज बेल से जोड़ता है, और पत्र का "स्टेम" विकर्ण से जोड़ता है। - बेल की शुरुआत में से एक
p
याb
(आपकी पसंद, यादृच्छिक होना जरूरी नहीं है) होना चाहिए, और क्षैतिज रूप से शुरू होता है। बेल का अंतq
याd
(आपकी पसंद, यादृच्छिक होना नहीं है) में से एक होना चाहिए, और क्षैतिज रूप से समाप्त होना चाहिए। - ध्यान दें कि छोरों को तुरंत अन्य छोरों (जैसे,
pd
बेल का एक वैध विकल्प) के निकट रखा जा सकता है , लेकिन बाद में कद्दू को रखने में अधिक मुश्किल हो सकती है। आप हमेशा- / \
एक लूप के तुरंत बाद एक हो सकते हैं (जैसा कि मैंने अपने उदाहरणों में किया था), लेकिन इसकी आवश्यकता नहीं है।
कद्दू नियम
- कद्दू पूरी तरह से
(())
(इस सटीक स्ट्रिंग) से बना है। - मुख्य बेल से, कद्दू ऑफशूट से जुड़े होते हैं। ये ऑफशूट केवल
p q b d
छोरों से जुड़े हो सकते हैं, ठीक एक\
या/
लंबाई में होते हैं, और कद्दू से जुड़ते हैं इसलिए ऑफशूट का "अंत" बीच में होता है। - वे मुख्य बेल के ऊपर या नीचे कनेक्ट कर सकते हैं।
- ऑफशूट "बाएं" पर जा सकते हैं।
- केवल एक कद्दू प्रति ऑफशूट संलग्न कर सकता है, और केवल एक ऑफशूट प्रति लूप।
अनियमितता
- जब क्षैतिज रूप से यात्रा करते हैं, तो बेल के पास क्षैतिज रूप से जारी रखने का 50% मौका होता है, उत्तर पूर्व की ओर जाने का 25% मौका और दक्षिण-पूर्व की ओर मुड़ने का 25% मौका होता है।
- तिरछे यात्रा करते समय, बेल में क्षैतिज मोड़ का 90% और तिरछे जारी रहने का 10% मौका होता है।
- कद्दू की इनपुट संख्या का समर्थन करने के लिए पर्याप्त मोड़ होना चाहिए, हालांकि अधिक मोड़ की अनुमति है।
- एक बार बेल का निर्माण हो जाने के बाद, कद्दू को किसी भी कोने पर बेतरतीब ढंग से रखा जा सकता है जो पहले से ही कद्दू के कब्जे में नहीं है।
- कद्दू बेल या अन्य कद्दू को ओवरलैप नहीं कर सकता है।
चुनौती
एक इनपुट नंबर को देखते हुए, उपरोक्त नियमों का पालन करते हुए एक यादृच्छिक कद्दू पैच का उत्पादन करें। एक ही इनपुट के साथ कोड को कई बार निष्पादित करने से अलग परिणाम प्राप्त होने चाहिए। दिए गए इनपुट नंबर के लिए सभी संभावित कद्दू पैच में कुछ (जरूरी नहीं कि बराबर) गैर-शून्य होने की संभावना होनी चाहिए।
इनपुट
n
पैच में कद्दू की संख्या का प्रतिनिधित्व करने वाला एक एकल पूर्णांक , किसी भी सुविधाजनक प्रारूप में । कोड की संक्षिप्तता के लिए, आप मान सकते हैं कि इनपुट है 0 < n < 256
।
उत्पादन
परिणामस्वरूप कद्दू पैच, या तो मुद्रित / स्क्रीन पर प्रदर्शित होता है या एक स्ट्रिंग / स्ट्रिंग-सरणी / आदि के रूप में वापस आ जाता है।
नियम
- यह कोड-गोल्फ है इसलिए गोल्फिंग के लिए सभी सामान्य नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।
- "रैंडम" की हमारी मानक परिभाषा का उपयोग करें ।
- या तो एक पूर्ण कार्यक्रम या फ़ंक्शन स्वीकार्य हैं।
- मानक खामियों को मना किया जाता है।
- व्हाट्सएप के लीडिंग और ट्रेलिंग / न्यूलाइन्स सभी पूरी तरह से वैकल्पिक हैं।
उदाहरण
इनपुट के लिए n = 3
, यहां उपरोक्त नियमों का पालन करते हुए कद्दू पैच के कुछ वैध उदाहरण हैं (रिक्त newlines द्वारा अलग किए गए)।
(())
\
p--q p-----q
/ \ / \
(()) b--d (())
(()) (())
\ /
b-q (())
\ /
b-q
p-----------------------q (())
/ \ /
(()) b-q
/
(())
यहां n = 3
स्पष्टीकरण के साथ इनपुट के लिए कुछ INVALID उदाहरण दिए गए हैं #
।
(()) (())
/ /
p---q----q
\
(())
# The vine continued horizontally after a loop was placed.
(()(())
\ /
p---q
\
(())
# The pumpkins are both overlapping and sprouting from the same loop.
p----------------q
\ \ \
(()) (()) (())
# The pumpkin is attached to the middle of the vine, not at a loop.