में मेरे पिछले चुनौती , मैं ज्यादातर अलग-अलग (vim का दृश्य ब्लॉक मोड की मदद से) पहले चित्र आकर्षित किया। लेकिन निश्चित रूप से एक बेहतर तरीका होना चाहिए ...
दो आयामों, एक चौड़ाई और ऊंचाई के इनपुट को देखते हुए, ASCII कला में उन आयामों के साथ एक हेक्सागोनल ग्रिड का उत्पादन किया जाता है।
यहां इंट्रो में संदर्भित आरेख (मामूली संपादन के साथ) है, जो इनपुट के लिए आपका आउटपुट होना चाहिए width=7, height=3
:
_____ _____ _____
/ \ / \ / \
_____/ -2,-1 \_____/ 0,-1 \_____/ 2,-1 \_____
/ \ / \ / \ / \
/ -3,-1 \_____/ -1,-1 \_____/ 1,-1 \_____/ 3,-1 \
\ / \ / \ / \ /
\_____/ -2,0 \_____/ 0,0 \_____/ 2,0 \_____/
/ \ / \ / \ / \
/ -3,0 \_____/ -1,0 \_____/ 1,0 \_____/ 3,0 \
\ / \ / \ / \ /
\_____/ -2,1 \_____/ 0,1 \_____/ 2,1 \_____/
/ \ / \ / \ / \
/ -3,1 \_____/ -1,1 \_____/ 1,1 \_____/ 3,1 \
\ / \ / \ / \ /
\_____/ \_____/ \_____/ \_____/
कई बातें नोटिस करें:
चौड़ाई और ऊंचाई अनिवार्य रूप से एक दिए गए y और x के लिए क्रमशः कितने हेक्सागोन के बराबर हैं। ये हमेशा विषम संख्या में होंगे।
प्रत्येक षट्भुज को ASCII कला द्वारा दर्शाया गया है
_____ / \ / \ \ / \_____/
लेकिन पड़ोसी हेक्सागोन्स के बीच सीमाओं को "साझा" किया जाता है।
निर्देशांक में अल्पविराम हमेशा शीर्ष किनारे के केंद्र से ठीक दो अक्षर नीचे होता है। X-निर्देशांक को कॉमा से पहले सीधे स्थित किया जाता है, और y- समन्वय के बाद सीधे।
आप यह मान सकते हैं कि निर्देशांक कभी भी इतने बड़े नहीं होंगे कि वे षट्भुज की सीमाओं को ओवरलैप कर दें।
इनपुट को व्हाट्सएप के रूप में लिया जा सकता है- / अल्पविराम से अलग स्ट्रिंग, पूर्णांक का एक सरणी, या दो फ़ंक्शन / कमांडलाइन तर्क। आउटपुट एक स्ट्रिंग होना चाहिए (STDOUT के लिए, वापसी मूल्य, आदि के रूप में)।
चूंकि यह कोड-गोल्फ है , बाइट्स में सबसे छोटा कोड जीत जाएगा।
उपरोक्त ग्रिड का उपयोग परीक्षण के मामले के रूप में किया जा सकता है। अधिकतम आकार का
width=199, height=199
ग्रिड यहां शामिल करने के लिए स्पष्ट रूप से अव्यावहारिक है, लेकिन पहले कुछ पंक्तियों और स्तंभों को निम्नलिखित की तरह दिखना चाहिए:
_____ ___
/ \ /
_____/-98,-99\_____/-96,
/ \ / \
/-99,-99\_____/-97,-99\___
\ / \ /
\_____/-98,-98\_____/-96,
/ \ / \
/-99,-98\_____/-97,-98\___
\ / \ /
\_____/-98,-97\_____/-96,
/ \ / \
/-99,-97\_____/-97,-97\___
\ / \ /