परिचय:
जब हम लेडीबग्स के बारे में सोचते हैं, तो हम आमतौर पर काले धब्बों के साथ एक लाल या गहरे नारंगी बग के बारे में सोचते हैं। यद्यपि यह आवश्यक नहीं है, क्योंकि लाल / नारंगी चित्तीदार भिंडी के साथ काले भी होते हैं , या बिना धब्बों वाली भिंडी होती है , हम मुख्य रूप से इस एशियाई गुबरैले जैसी भिंडी की तस्वीर लेते हैं:
एक और ध्यान देने वाली बात यह है कि भिंडी पर धब्बे लगभग हमेशा सममित होते हैं। और यहीं से यह चुनौती सामने आती है।
चुनौती:
एक पूर्णांक n( >= 0) को देखते हुए , निम्नलिखित ASCII- आर्ट लेडीबग को एक या कई बार आउटपुट करें, सममित धब्बों को समान रूप से दो पक्षों के बीच विभाजित किया जाए, साथ ही साथ दो या अधिक लेडीबग्स।
यहाँ डिफ़ॉल्ट लेडीबग लेआउट है:
_V_
/(@I@)\
/ | \
| | |
\ | /
''-!-''
यदि n=0, हम ऊपर के रूप में भिंडी का उत्पादन करते हैं।
जब nशून्य से बड़ा होता है, तो हम या तो ASCII- कला बग के रिक्त स्थान को भरते हैं o, या |केंद्र में एक राजधानी के साथ प्रतिस्थापित करते हैं O। लक्ष्य n'खाली' लेडीबग (एस) में परिवर्तन करना है, जबकि अभी भी सममित आउटपुट (प्रति लेडीबग) का उत्पादन करना है, और संभव के रूप में कुछ लेडीबग्स का उत्पादन करना है।
तो इसके लिए वैध आउटपुट n=1हैं:
_V_
/(@I@)\
/ O \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| | |
\ O /
''-!-''
लेकिन यह अमान्य होगा:
_V_
/(@I@)\
/ | \
| o | |
\ | /
''-!-''
इसके लिए वैध आउटपुट n=2हैं:
_V_
/(@I@)\
/ O \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ O \
| | |
\ O /
''-!-''
_V_
/(@I@)\
/ o|o \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| o | o |
\ | /
''-!-''
etc. There are a lot of possible outputs.
पहला nजो अब एक सिंगल लेडीबग में फिट होना संभव नहीं है n=24। जिस स्थिति में आपको इसे दो लेडीबग्स में समान रूप से विभाजित करना होगा (आप चुन सकते हैं कि उन्हें एक-दूसरे के बगल में आउटपुट करें, या एक-दूसरे के नीचे - वैकल्पिक रूप से एक स्थान या उनके बीच एक नई-लाइन के साथ)। उदाहरण के लिए:
_V_ _V_
/(@I@)\ /(@I@)\
/o o|o o\ /o o|o o\
|o o | o o||o o | o o|
\o o|o o/ \o o|o o/
''-!-'' ''-!-''
या:
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
चुनौती नियम:
nकी सीमा में होगा0-1000।- आप STDOUT में आउटपुट चुन सकते हैं, स्ट्रिंग या 2D-char एरे / लिस्ट आदि के रूप में वापस आ सकते हैं।
- नई-नई लाइनों या अनावश्यक व्हाट्सएप की अनुमति नहीं है। अनुगामी श्वेत-रिक्त स्थान और एकल अनुगामी नई-रेखा की अनुमति है।
- जैसा कि ऊपर उल्लेख किया गया है, जब दो या अधिक लेडीबग आवश्यक होते हैं, तो आप यह चुन सकते हैं कि उन्हें एक दूसरे के बगल में या एक दूसरे के नीचे (या दोनों का मिश्रण ..) के लिए आउटपुट करना है या नहीं।
- जब दो या अधिक लेडीबग्स एक-दूसरे के बगल में मुद्रित होते हैं, तो बीच में एक एकल वैकल्पिक स्थान की अनुमति होती है। जब दो या अधिक लेडीबग्स को एक दूसरे के नीचे प्रिंट किया जाता है, तो बीच में एक एकल वैकल्पिक नई-लाइन की अनुमति दी जाती है।
- आप अनुक्रम के दौरान किसी भी चरण पर लेडीबग्स के लेआउट को चुन सकते हैं, जब तक कि वे सममित और इनपुट के बराबर न हों
n। - चूंकि लक्ष्य में
nबदलाव है और जितनी संभव हो उतनी कम लेडीबग्स हैं, आप ऊपर से एक से अधिक लेडीबग का उपयोग करना शुरू कर देंगेn=23। इन लेडीबग्स का लेआउट जरूरी नहीं है कि समान होना चाहिए। वास्तव में, यह कुछ इनपुट के लिए संभव नहीं है, जैसे दो का नामn=25याn=50। - इसके अलावा, कभी-कभी दो या अधिक लेडीबग्स के बीच डॉट्स को समान रूप से विभाजित करना संभव नहीं होता है। उस स्थिति में आपको उन्हें यथासंभव समान रूप से विभाजित करना होगा, जिनके बीच में 1 का अंतर होगा।
इसलिए n=50, पिछले दो नियमों को ध्यान में रखते हुए, यह एक वैध संभव आउटपुट होगा (जहां पहले बग में 16 स्पॉट हैं, और अन्य दो में 17 हैं):
_V_ _V_ _V_
/(@I@)\ /(@I@)\ /(@I@)\
/oooOooo\ / O \ /o oOo o\
|ooooOoooo||ooooOoooo||o ooOoo o|
\ | / \oooOooo/ \o oOo o/
''-!-'' ''-!-'' ''-!-''
सामान्य नियम:
- यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव संक्षिप्त उत्तर के साथ आने का प्रयास करें। - मानक नियम आपके उत्तर के लिए लागू होते हैं , इसलिए आपको उचित पैरामीटर और रिटर्न-टाइप, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति दी जाती है। तुम्हारा कॉल।
- डिफ़ॉल्ट ढीले निषिद्ध हैं।
- यदि संभव हो, तो कृपया अपने कोड के लिए एक परीक्षण के साथ एक लिंक जोड़ें।
- इसके अलावा, यदि आवश्यक हो तो एक स्पष्टीकरण जोड़ें।
oऔर Oबदले। मैंने शब्दों को थोड़ा बदल दिया है।
n=50लिए, मेरा मानना है कि आपका मतलब है कि पहले बग में 16 स्पॉट हैं और अन्य दो में 17 हैं।


हम
अगला हम स्टड से स्पॉट की संख्या में पढ़ते हैं और आवश्यक लेडीबग्स की संख्या की गणना करते हैं।
हम तब बग के सेट के लिए बाहरी लूप शुरू कर सकते हैं, अगले लेडीबग के लिए स्पॉट की संख्या की गणना की जा सकती है।
प्रत्येक लेडीबग के लिए, हम गणना करते हैं कि बड़े केंद्र स्थान को दिखाया जाना चाहिए (यदि
इसी तरह, हम गणना करते हैं कि क्या बड़े स्थानों के दूसरे जोड़े को (यदि
लुकअप टेबल इनिशियलाइज़ेशन का अंतिम भाग एक लूप है जो गणना करता है कि कौन से छोटे स्पॉट्स को प्रदर्शित करने की आवश्यकता है। अनिवार्य रूप से एल्गोरिथ्म है: यदि
अगले हम स्टैक पर भिंडी के एन्कोडेड स्ट्रिंग प्रतिनिधित्व को धक्का देते हैं। यह अनिवार्य रूप से सिर्फ एक साधारण स्ट्रिंग है, लेकिन यह थोड़ा जटिल हो गया क्योंकि मैंने इसे कोड में अंतराल में निचोड़ने की कोशिश की ताकि स्रोत एक आयत बन जाए।
इस बिंदु पर, हम पहले से निर्मित लुकअप टेबल के माध्यम से विशेष मामलों (स्पॉट, लाइन ब्रेक, आदि) को परिवर्तित करके, एक-एक करके वर्णों को संसाधित करने, आउटपुट लूप शुरू करने के लिए तैयार हैं।
अंत में हम जांचते हैं कि क्या हमने सभी आवश्यक लेडीबग्स प्रदर्शित किए हैं, अन्यथा बाहरी लूप की शुरुआत में वापस जारी रहें।