परिचय
लंबी कहानी छोटी: कुछ दिन पहले मैंने गलती से एक जुर्राब बुनना शुरू कर दिया था और सादे टांके की बहुत तार्किक संरचना मुझे इस विचार की ओर ले जाती है: हम सिर्फ ASCII- बुनना ही क्यों नहीं करते?
इनपुट
इनपुट रेंज में एक समान पूर्णांक N है [2,30]।
उत्पादन
आउटपुट एक जुर्राब है, जाहिर है।
संरचना
क्योंकि हम केवल सादे टांके का उपयोग करेंगे आप केवल vनीचे >की ओर सिलाई के लिए और दाईं ओर एक सिलाई के लिए उपयोग करेंगे । मुझे इसके लिए एक उदाहरण के साथ पूर्ण संरचना की व्याख्या करें N=8:
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
- पहला ब्लॉक ऊपरी हिस्सा है। इसकी चौड़ाई
Nऔर ऊंचाई हैN*1.5 - बाद में एड़ी शुरू होती है।
vजब तक आपके पासN/2चौड़ाई न हो, आप दाईं ओर से एक पंक्ति को घटाएँ । फिर आप नीचे की बुनना खत्म करने केN/2लिए चौड़ाई के साथ पंक्तियों को जोड़ते हैंN/2। ध्यान दें कि यहN/2 + 1चौड़ाई के साथ कुल पंक्तियाँ देता हैN/2
पहला भाग:
vvvvvvvv //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv // N*1.5 times
vvvvvvv // reduce
vvvvvv
vvvvv
vvvv // till here
vvvv // repeat N/2 times
vvvv
vvvv
vvvv
- अब साइड वार्ड की बुनाई शुरू होती है। आप पहली कम की गई पंक्ति से शुरू करते हैं,
>तब तक भरें जब तक आपके पास चौड़ाई न होNऔर दो और जोड़ दें।N/2चौड़ाई के साथ पहली पंक्ति सहित उस प्रक्रिया को जारी रखें - उस स्तर के नीचे की पंक्तियों को भरें और उस
N*1.5समय>को जोड़ दें - बाहरी हिस्सों को वैसे ही रहने दें जैसे पहले और नीचे की पंक्ति में दो और जोड़ दें
>'sजब तक कि यह समाप्त न हो जाए
दूसरा भाग:
vvvvvvvv
vvvvvvv>>> //fill to N and add two >
vvvvvv>>>>>> //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>> //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>> //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
नियम
अनुगामी नई लाइनें ठीक हैं।
आप अपरकेस या लोअरकेस के बीच चयन कर सकते हैं Vलेकिन इसे लगातार करना होगा।
यह कोड-गोल्फ है इसलिए बाइट्स जीत में सबसे छोटा कोड है।
परीक्षण के मामलों
N=2
vv
vv
vv
v>>>
v>>>>>>
N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>
N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vया Vपरस्पर विनिमय कर सकता हूं ? मैं उस क्षण के लिए अनुमान लगाने जा रहा हूं vजो केवल एक ही अनुमति है, लेकिन अनुमति Vबाइट की गिनती को प्रभावित करेगी