एक ASCII षट्कोण वलय टाइलिंग बनाएं


10

ASCII का उपयोग करके हेक्सागोन रिंग टाइलिंग के एक सेक्शन को प्रिंट करें।

यहाँ एक छोटा सा खंड है:

       /\__/\
      /_/  \_\
 /\__/\ \__/ /\__/\ 
/_/  \_\/__\/_/  \_\
\ \__/ /\__/\ \__/ /
 \/__\/_/  \_\/__\/
 /\__/\ \__/ /\__/\ 
/_/  \_\/__\/_/  \_\ 
\ \__/ /\__/\ \__/ /
 \/__\/_/  \_\/__\/
      \ \__/ /
       \/__\/

यहाँ एक बड़ा खंड है:

\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\
 /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/
\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\
 /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/
\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\
 /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/

चुनौती

2 पूर्णांक hऔर w, जहां hऊंचाई है और wचौड़ाई है, को देखते हुए hxwएक षट्भुज वलय टाइलिंग के एक खंड का उत्पादन करता है ।

उदाहरण

इनपुट 1

4x4

आउटपुट 1

 /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/
\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\
 /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/
\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\
 /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/
\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\
 /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/
\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\

इनपुट 2

3x3

आउटपुट 2

 /\__/\ \__/ /\__/\
/_/  \_\/__\/_/  \_\
\ \__/ /\__/\ \__/ /
 \/__\/_/  \_\/__\/
 /\__/\ \__/ /\__/\
/_/  \_\/__\/_/  \_\
\ \__/ /\__/\ \__/ /
 \/__\/_/  \_\/__\/
 /\__/\ \__/ /\__/\
/_/  \_\/__\/_/  \_\
\ \__/ /\__/\ \__/ /
 \/__\/_/  \_\/__\/

इनपुट 3

1x3

आउटपुट 3

 /\__/\ \__/ /\__/\
/_/  \_\/__\/_/  \_\
\ \__/ /\__/\ \__/ /
 \/__\/_/  \_\/__\/

इनपुट 4

3x6

आउटपुट 4

 /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/
\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\
 /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/
\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\
 /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /
/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/
\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\
 \/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\

स्पष्टीकरण

  • मेरा प्रश्न इसके समान है: मी वांट हनीकॉम्ब
  • फॉर्म में इनपुट एक ही लाइन पर होगा hxw
  • स्टडआउट (या कुछ इसी तरह) के लिए आउटपुट।
  • यह कोड-गोल्फ है इसलिए बाइट्स में सबसे कम जवाब जीतता है।

6
आपको स्पष्ट रूप से स्पष्ट करना चाहिए कि स्पष्ट और वस्तुनिष्ठ बने रहने के लिए हमें कितना बड़ा भाग तैयार करना चाहिए
जेम्स

मैंने अभी आपकी टिप्पणी देखी कि मैं इसे और अधिक स्पष्ट करने के लिए आयामों को ठीक करूँगा
Bobas_Pett

चूंकि मुझे नहीं लगता कि मध्यस्थों ने मेरी टिप्पणी देखी, अगर यह सवाल अगले 2 घंटों तक पकड़ में रहता है, तो मैंने जो संपादन किया था, उसके साथ एक अपडेट किया हुआ प्रश्न और स्पष्टता के लिए 4 वां उदाहरण है। भ्रम के लिए खेद है और अगर मैंने जो संपादन किया है, वह आपके करीब नहीं है तो कृपया टिप्पणी पोस्ट करके मुझे बताएं कि क्या आवश्यक है।
बोबास_पेट

क्या यह कोल्मोगोरोव-जटिलता को टैग किया जाना चाहिए?
पावेल

बीमार इसे 1 सेकंड में जोड़ें ...
Bobas_Pett

जवाबों:


2

Befunge, 137 बाइट्स

मुझे लगता है कि किसी तरह की स्कैफ़ी हाथ से बनाई गई है।

&>4*>~>$&>\>1-:4%3v
>00gg,\1-:v^_@#:\<>+00p\::6*\00g2/+2%+1+66+:
^%+66<:+1\_$$55+,^
_\/__\/_/  \
\ \__/ /\__/\
/_/  \_\/__\/
 /\__/\ \__/

इसे ऑनलाइन आज़माएं!

व्याख्या

&>4*>                    Read the height and multiply by 4.
     ~>$                 Drop the 'x' separator. 
        &>\              Read the width and swap below the height

>                        Start of the outer loop.
 1-                      Decrement the height.              
   :4%3+00p              Calculate the pattern y offset: height%4+3
           \             Swap the width back to the top.

::6*\00g2/+2%+1+         Calculate the line length: w*6+(w+y/2)%2+1 
                66+:     Initialise the pattern x offset to 12, and duplicate it.

>                        Start of the inner loop.     
 00gg                    Get a pattern char using the x on the stack and the saved y.
     ,                   Output the char.
      \1-                Swap the line length to the top of the stack and decrement it.
         :v              Check if it's zero, and if so...
          _                 ...break out of the loop to the right.
       +1\               Otherwise swap the x offset back to the top and increment it.
 %+66<:                  Mod it with 12 to make sure it's in range.
^                        Then return to the beginning of the inner loop.

$$                       Drop the x offset and line length.
  55+,                   Output a newline.
     \<                  Swap the height back to the top of the stack.
 _@#:                    Check if it's zero, and exit if that's the case.
^                        Otherwise return to the start of the outer loop.

3

लुआ, 174 176 156 बाइट्स

कोड ऊँचाई-राशि की पंक्तियों को मुद्रित करेगा, न कि ऊँचाई-षट्भुज की मात्रा को। जोड़ा *4, कि यह तय है, लेकिन 2 अतिरिक्त बाइट्स जोड़ा गया। यदि मोडुलो से काउंटर बदलकर और दो io.read()एस को एक में डालकर कुछ बाइट्स को बचाया ।

io.read()इनपुट के रूप में उपयोग करता है।

a,w,h,n,d={[[ /\__/\ \__/]],[[/_/  \_\/__\\]],[[\ \__/ /\__/]],[[_\/__\/_/  \\]]},io.read(,),"",0 for i=h*4,0,-1 do d=d+1 d=5%d end n=a[d]print(n:rep(w))end

के माध्यम से कई बार स्ट्रिंग्स की चौड़ाई-राशि को string:rep(width)दर्शाता है, फिर एक लूप के साथ ऊंचाई की मात्रा को पुनरावृत्त करता है। जरूरत है [[]](शाब्दिक तार) क्योंकि बैकस्लैश वास्तव में सामान को खराब कर देते हैं।

पुराना संस्करण:

a,w,h,n,d={[[ /\__/\ \__/]],[[/_/  \_\/__\\]],[[\ \__/ /\__/]],[[_\/__\/_/  \\]]},io.read(),io.read(),"",0 for i=h*4,0,-1 do d=d+1 d=5%d end n=a[d]print(n:rep(w))end

1

पायथन 2, 180 बाइट्स

a,b,c,d=' /\__/\ \__/','/_/  \_\/__\\','\ \__/ /\__/','_\/__\/_/  \\'
h,w=input()
x=w/2
e,E=[(2,1),(7,8)][w%2]
print'\n'.join([a*x+a[:e],b*x+b[:E],c*x+c[:E],' '+(d*x+d[:e])[1:]]*h)

दो पूर्णांकों के रूप में इनपुट लेता है

इनपुट: 2,7

आउटपुट:

 /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\
/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\
\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /
 \/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/
 /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\
/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\
\ \__/ /\__/\ \__/ /\__/\ \__/ /\__/\ \__/ /
 \/__\/_/  \_\/__\/_/  \_\/__\/_/  \_\/__\/

1

बैच, 266 बाइट्स

@echo off
for /l %%i in (1,1,%1)do call:l %2 " \" /__\/ "_/  \_\" " \__/ /" \__/\
exit/b
:l
call:c %1 " /" %6 %5
call:c %1 / %4 %3
call:c %1 \ %5 %6
:c
set s=%~2
for /l %%j in (2,2,%1)do call set s=%%s%%%~3%~4
set/ao=%1^&1
if %o%==1 set s=%s%%~3
echo %s%

:cसबरूटीन टुकड़े एक लाइन के लिए एक साथ श्रृंखलाबद्ध के सभी शेष काम करता है, यह रिंग्स के प्रत्येक पंक्ति के लिए 4 लाइनों को उत्पन्न करने के लिए :l4 बार ( :l'एस के सुपरसेट होने के लिए ' की व्यवस्था करके) 4 बार (एक बार गिरने से) कहा जाता है :c। इसके बजाय रिंगों की अंतिम पंक्ति के माध्यम से गिरने की भी संभावना थी लेकिन यह 5 बाइट्स से अधिक लंबा हो गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.