ASCII ने हेक्सागोन्स को जोड़ा


21

अवलोकन

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


ख़ाका

सभी षट्भुज निम्नलिखित रूप में होने चाहिए (केवल यह आकार और अभिविन्यास मान्य है):

 __
/  \
\__/    Note there are 2 underscores per horizontal edge.

यदि वे एक किनारे साझा करते हैं तो दो हेक्सागोन सीधे जुड़े हुए हैं :

 __               __
/  \__           /  \
\__/  \          \__/
   \__/    or    /  \
                 \__/

यदि वे केवल एक शीर्ष साझा करते हैं तो दो हेक्सागोन जुड़े नहीं हैं:

 __  __
/  \/  \
\__/\__/

आधा किनारा साझा करना भी जुड़ा हुआ नहीं है:

 __
/  \
\__/
 /  \
 \__/

हेक्सागोन्स का एक संग्रह जुड़ा हुआ है अगर किसी भी हेक्सागोन से किसी भी अन्य तक सीधे सीधे जुड़े हेक्सागोन का उपयोग करके एक पथ मौजूद है ।

छेद

हेक्सागोन के जुड़े संग्रह में एक षट्भुज आकार का छेद एक षट्भुज के रूप में गिना जाता है, ताकि एएससीआईआई कला के किसी भी दिए गए टुकड़े में एक अस्पष्ट षट्भुज गिनती हो।

यह एक छेद के रूप में गिनती नहीं करता है क्योंकि संभावित छेद एक एकल षट्भुज है:

    __
 __/  \__
/  \__/  \
\__/  \__/
/  \__/  \
\__/  \__/
   \__/      7 hexagons (not 6 with a hole)

यह करता है एक छेद के बाद से यह एक एकल षट्भुज के अनुरूप नहीं है के रूप में गिनती:

    __
 __/  \__
/  \__/  \__
\__/  \__/  \
/  \__   \__/
\__/  \__/  \
   \__/  \__/
      \__/      8 hexagons with a hole

इनपुट और आउटपुट

इनपुट

1 से 255 तक पूर्णांक।

उत्पादन

एक ASCII कला स्ट्रिंग जो उपरोक्त वर्णित हेक्सागोन्स की इनपुट संख्या का प्रतिनिधित्व करती है।

  • पंक्तियों की संख्या (न्यूलाइन सेपरेटेड सबस्ट्रिंग) अधिकतम 50 पर है, साथ ही एक अतिरिक्त वैकल्पिक अनुगामी न्यूलाइन है।
  • पंक्तियों की लंबाई समान नहीं होनी चाहिए, लेकिन प्रत्येक की लंबाई अधिकतम 50 होनी चाहिए।
  • शून्य लंबाई की पंक्तियाँ जुड़ी हुई आकृति के ऊपर या नीचे मौजूद हो सकती हैं, बशर्ते पंक्तियों की कुल संख्या 50 से अधिक न हो।
  • अंतरिक्ष-केवल पंक्तियाँ जुड़ी हुई आकृति के ऊपर या नीचे मौजूद हो सकती हैं बशर्ते पंक्तियों की कुल संख्या 50 से अधिक न हो।
  • रिक्तियाँ आकृति के बाईं ओर दिखाई दे सकती हैं बशर्ते पंक्ति की लंबाई 50 से अधिक न हो (आकार को बाईं ओर संरेखित करने की आवश्यकता नहीं है)।
  • आकार आकृति के दाईं ओर दिखाई दे सकते हैं बशर्ते पंक्ति की लंबाई 50 से अधिक न हो।
  • कोई भी वर्ण जो कनेक्टेड आकृति का हिस्सा नहीं बनता है, उसे या तो रिक्त स्थान होना चाहिए या नए सिरे से।

बशर्ते आउटपुट सही हो, यह एक रन से अगले तक लगातार होना आवश्यक नहीं है।

उदाहरण

इनपुट: 6

मान्य आउटपुट:

 __    __    __
/  \__/  \__/  \__
\__/  \__/  \__/  \
   \__/  \__/  \__/

 __    __
/  \__/  \
\__/  \__/
/  \__/  \
\__/  \__/
   \__/

          __
 __      /  \
/  \__   \__/
\__/  \__/  \
   \__/  \__/
      \__/
      /  \
      \__/

अमान्य आउटपुट:

    __
 __/  \__
/  \__/  \
\__/  \__/
/  \__/  \
\__/  \__/
   \__/      Invalid for 6 as the centre hole counts as a 7th hexagon.

 __    __    __      __
/  \__/  \__/  \    /  \
\__/  \__/  \__/    \__/
   \__/  \__/                Invalid as the 6 hexagons are not connected.

 __    __    __  __
/  \__/  \__/  \/  \
\__/  \__/  \__/\__/
   \__/  \__/           Invalid as vertex touching does not count as connected.

 __    __       __
/  \__/  \     /  \
\__/  \__/     \__/
/  \__/  \
\__/  \__/
   \__/       Invalid as the 6 connected hexagons are not the only visible characters.

जीतना

बाइट्स जीत में सबसे कम वैध जवाब।


लीडरबोर्ड

( मार्टिन लीडरबोर्ड स्निपेट का उपयोग करके )


मुझे डर है कि हर कोई पहले उदाहरण के आउटपुट पैटर्न का उपयोग करेगा क्योंकि इसे लागू करना सबसे आसान है।
घातक

1
@ मेरे उदाहरणों को केवल इनपुट के लिए काम करें 6255हेक्सागोन की एक क्षैतिज पंक्ति के इनपुट के लिए 50 में 50 ASCII कला नहीं होगी।
ट्राइकोप्लाक्स

आप अभी भी बस वापस लूप कर सकते हैं और हर बार जब आप 50
चार्ट की

1
@Fatalize कोड में बाइट्स की संख्या को कम करने के लिए चुनौती है। मुझे कोई आपत्ति नहीं है यदि पैटर्न सरल हैं, तो यह देखना दिलचस्प होगा कि लोग क्या प्रयास करते हैं और विभिन्न भाषाओं पर क्या सूट करते हैं।
ट्राइकोप्लाक्स

@ फ़ेटलाइज़ करें: मुझे पता नहीं कि यह छोटा होगा या नहीं, लेकिन अधिक "दिलचस्प" उत्तर यह देखने के लिए एक वास्तविक खोज कर सकता है कि यह हेक्सागोन्स को कहां रख सकता है और इस प्रकार एक अधिक दिलचस्प आउटपुट मिलता है।
एलेक्स वान एलवाईई

जवाबों:


13

CJam, 64 57 55 बाइट्स

" __
/  \
\__/"N/{_SS/\+_47>S3*f{\+}_2>\@?}q~(*]:..e>N*

इसका परीक्षण यहां करें।

यह निम्न पैटर्न उत्पन्न करेगा, कॉलम-वार :

 __    __    __    __    __    __
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/  \__/  \__/  \
/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/  \__/  \__/  \
/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/  \__/  \__/  \
/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/  \__/  \__/

व्याख्या

यह डेनिस के पर आधारित है उत्कृष्ट टिप , का उपयोग करते हुए .e>कई टुकड़े से एक ASCII कला उत्पादन इकट्ठा करने के लिए। जैसा कि वे कहते हैं, .e>तत्व-वार अधिकतम दो सरणियों (या स्ट्रिंग्स) को लेता है, और चूंकि रिक्त स्थान में सबसे कम वर्ण कोड होता है, हम इसका उपयोग किसी अन्य वर्ण को स्ट्रिंग ग्रिड पर लगाने के लिए कर सकते हैं। इसके अलावा, यदि दो सरणियों की लंबाई समान नहीं है, तो दीर्घ सरणी के बाहरी तत्व बस अपरिवर्तित हैं। इसका मतलब है कि अलग-अलग पैटर्न को समान आकार की आवश्यकता नहीं है। इसे द्वि-आयामी सरणियों पर लागू करने के लिए (क्योंकि हम बहुत अंत तक नईलाइन्स सम्मिलित नहीं करना चाहते हैं), हम .e>लाइनों के लिए युग्मक लागू करते हैं, जो देता है..e>

कोड का मूल विचार Nसही स्थिति में स्थानांतरित एकल षट्भुज की प्रतियां उत्पन्न करना है। हम खाली स्थानों और क्षैतिज रूप से प्रीपेडिंग स्पेस द्वारा लंबवत रूप से षट्भुज को "स्थानांतरित" करते हैं। एक बार जब हम कर लेते हैं, तो हम सभी प्रतियों को एक साथ :..e>जोड़ते हैं, सुंदर का उपयोग करते हुए (शायद सबसे लंबा ऑपरेटर जो मैंने कभी सीजैम प्रोग्राम में उपयोग किया है)।

यहाँ कोड है:

" __
/  \
\__/"N/    e# Get a 2D character grid of the hexagon.
{          e# Read input N, repeat this block N-1 times.
  _        e#   Make a copy, so we leave the last hexagon on the stack.
  SS/\+    e#   Prepend two empty lines.
  _47>     e#   Make a copy and discard the first 47 lines.
  S3*f{\+} e#   Prepend 3 spaces to each line. This copy has been moved back to
           e#   the top and one column to the right.
  _2>      e#   Make a copy and discard another two lines.
  \@?      e#   If any lines were left after that, pick the copy in the next column,
           e#   otherwise, stay in the same column.
}q~(*      
]:..e>     e# Wrap all the hexagons in an array and fold them into a single grid.
N*         e# Join them with newline characters.

यार, मुझे वास्तव में इन गोल्फ भाषाओं में से एक को सीखना चाहिए।
एलेक्स वैन एलवाईई

@AlexVanLiew आपको करना चाहिए! :) लेकिन इसलिए नहीं कि यह आपके कोड गोल्फ जीतने के अवसरों को बेहतर बनाता है, बल्कि इसलिए कि सीजेएम एक खूबसूरत भाषा है, जो प्रोग्राम करने में मजेदार है, और मैं किसी अन्य भाषा को नहीं जानता जिसमें उपरोक्त समाधान (जो मुझे लगता है कि बहुत ही सुंदर है) समझदारी होती। ;)
मार्टिन एंडर

मैं शायद अजगर या दोनों सीखूँगा; क्या वे दोनों एक ही चीज़ से बहुत ज्यादा हैं या बाकियों से बेहतर हैं?
एलेक्स वान एलवाईई

@AlexVanLiew मैं ज्यादा पर्थ नहीं जानता, लेकिन मुझे पता है कि वे एक ही चीज़ से बहुत दूर हैं। CJam एक स्टैक्ड-आधारित भाषा है, जबकि Pyth की शुरुआत Python के लिए एक शॉर्टहैंड के रूप में हुई थी (लेकिन अब इसका स्वयं का सेट-इन्स है)। जब गोल्फ की बात आती है, तो पाइथ का ऊपरी हाथ थोड़ा हो सकता है , लेकिन मैं व्यक्तिगत रूप से एक अलग प्रतिमान में प्रोग्रामिंग का आनंद लेता हूं, इसलिए मैं सीजेएम के साथ रहूंगा।
मार्टिन एंडर

आह मैंने देखा। मैं पायथन को अच्छी तरह से जानता हूं, यही वजह है कि मैं अजगर को सीखना चाहता हूं, लेकिन अगर मुझे समय मिलता है तो शायद मैं सीजाम को भी आजमाऊंगा!
एलेक्स वान एलवाईईवाई

7

पायथन 2, 219 207 वर्ण

b=bytearray(' ');h=['__ ','/  \\','\\__/'];k=range;x=input();g=[b*50for _ in k(50)]
for i in k(x):
 c=i*3%48+1;r=(i*3+1)/48*2+i%2
 for m in k(i>15,3):n=m==0;g[r+m][c+n:c+4-n]=h[m]
print"\n".join(map(str,g))

स्टड पर इनपुट लेता है।

बहुत ज्यादा बस एक 50x50 ग्रिड का स्थान बनाता है और जहां उपयुक्त हो वहां हेक्सागोन्स को बंद कर देता है। 16 वीं षट्भुज के बाद, मुझे पहली पंक्ति की जरूरत नहीं है h(एक 2 डी सरणी के रूप में षट्भुज) इसलिए मैं i>150. के बजाय 1 पर रेंज शुरू करने के लिए उपयोग करता हूं । सी ओलीमेंट और आर ओऊ की c=i*3%48+1;r=(i*3+1)/48*2+i%2गणना करता हूं जिसे मुझे शुरू करने की आवश्यकता है। एक बूलियन है लेकिन सीमा को ठीक करने के लिए एक पूर्णांक के रूप में उपयोग किया जाता है (चूंकि अधिलेखित सामान से बचने के लिए केवल 3 वर्ण हैं)।nh[0]

मैं इस एक के साथ बहुत खुश हूं, मैंने शुरुआती संस्करण के बाद से लगभग 50 बाइट्स का मुंडन किया, खासकर जब मुझे a[x:y]=bवाक्यविन्यास याद था ।

आउटपुट (n = 30):

  __    __    __    __    __    __    __    __
 /  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__
 \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \
 /  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/
 \__/  \__/  \__/  \__/  \__/  \__/  \__/  \
    \__/  \__/  \__/  \__/  \__/  \__/  \__/
(plus 44 lines of spaces each 50 wide)

चूंकि व्हॉट्सएप की अनुगामी लाइनों को अनुमति दी जाती है, इसलिए मैंने 12 बाइट्स को शेविंग करने के लिए आवश्यक पंक्तियों की सटीक संख्या के बजाय gकेवल 50 bytearrayएस बनाने के लिए सृजन को बदल दिया है 3+(x>1)+x/16*2


6

स्विफ्ट 2.0, 601 591 बाइट्स

import Cocoa
var a=Int(Process.arguments[1])!,b="/  \\__".join([String](count:9,repeatedValue:""))+"/",c="\\__/  ".join([String](count:9,repeatedValue:""))+"\\",d=c.startIndex,e=c.endIndex,j=[c.stringByReplacingOccurencesOfString("\\",withString:" ").stringByReplacingOccurencesOfString("/",withString:" ").substringToIndex(advance(d,3*a,e)),b.substringToIndex(advance(d,3*a+a%2,advance(e,-1)))]
while a>0{j+=[c.substringToIndex(advance(d,3*a+1,e)),b.substringToIndex(advance(d,3*a+(a+1)%2,e)]
a<=16 ?j+=[" "+j.removeLast().substringFromIndex(advance(d,1))]:()
a-=16}
for l in j{print(l)}

चलाने के लिए: swift hexagons.swift 21

आउटपुट:

 __    __    __    __    __    __    __    __    
/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__
\__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \
/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/
   \__/  \__/  

स्विफ्ट के substringToIndexऔर stringByReplacingOccurencesOfStringकई पात्रों को ले ...


मैं स्विफ्ट को बिलकुल नहीं जानता, लेकिन क्या उस कोड को कम कोड के साथ बनाने का कोई तरीका नहीं है?
रेटो कोराडी

एक स्ट्रिंग को दोहराने का एकमात्र तरीका मुझे पता है stringByPaddingToLength, हालांकि इस मामले में यह पूर्ण स्ट्रिंग टाइप करने की तुलना में 11 वर्ण लंबा होगा।
डेविड स्क्रंडज़

6
मैं देखता हूं कि Apple वास्तव में वर्बोज़ स्ट्रिंग स्ट्रिंग को पसंद करता है। stringByAppendingStringऑब्जेक्टिव-सी में भी उतना बुरा नहीं है लेकिन फिर भी ...
16

कोड गोल्फ के बाहर यह वास्तव में अच्छा है क्योंकि यह एक विधि की खोज को इतना आसान बनाता है।
JustSid

4

सी, 238 बाइट्स

#define h(A) c[m+A/4][n+A%4]
i,m,n;
f(a)
{
    char c[50][51];
    for(i=0;i<50;i++)for(m=0;m<51;m++)c[i][m]=m-50?32:0;
    for(;a;)
        m=a/12*2,n=a%12*3,a--%2?m=a/12*2+1,n=a%12*3+3:0,
        h(1)=h(2)=h(9)=h(10)=95,h(4)=h(11)=47,h(7)=h(8)=92;
    for(;i;)puts(c-i--+50);
}

केवल आवश्यक रिक्त स्थान और चरित्र गणना के लिए नए सिरे से विचार किया गया।

यह बस वर्णों का एक मैट्रिक्स बनाता है, उन्हें रिवर्स ऑर्डर में भरता है, और फिर पूरी बात प्रिंट करता है।


2

जावास्क्रिप्ट (ईएस 6), 265 बाइट्स

A=Array;f='forEach';U=x=1;y=0;a=A.from(A(51),_=>A.from(A(51),_=>' '));d=h=>(` __
/  \\
\\__/`.split`
`[f]((l,i)=>[...l][f]((c,j)=>{if('_/\\'.indexOf(a[x+i][y+j])<0)a[x+i][y+j]=c})),(x+=U*-2+1),(U=!U),(C-y<=3?((U=x+=2),y=0):y+=3),--h?d(h):a.map(d=>d.join``).join`
`)

एक पंक्ति में हेक्सागोन्स को बाईं ओर से दाईं ओर टेसलेट करता है, बारी-बारी से एक मधुकोश की तरह - जब तक कि एक पंक्ति के अंत तक नहीं पहुंच जाता है।

विवरण के साथ अधूरा (फ़ायरफ़ॉक्स में काम करता है):

'use strict';
const CAP = 51;
var a = Array.from(Array(51), () => Array.from(Array(51),() => ' '))

function draw (hexagons, x, y, a, up) {
  // x, y (row, col) represents the current position of the cursor
  /*
  
    Here's a map of the first three iterations:
    
            01234567
     0        __
     1     __/  \__
     2    /  \__/  \
     3    \__/  \__/

    For the first 17 iterations, the cursor will be at:
    
      # | x | y
      ----------
      1 | 1 | 0
      2 | 0 | 3
      3 | 1 | 6
      4 | 0 | 9
      5 | 1 | 12
      6 | 0 | 15
      7 | 1 | 18
      8 | 0 | 21
      9 | 1 | 24
     10 | 0 | 27
     11 | 1 | 30
     12 | 0 | 33
     13 | 1 | 36
     14 | 0 | 39
     15 | 1 | 42
     16 | 0 | 45
     17 | 3 | 0      <- moves back to the first row

  */
` __
/  \\
\\__/`
  // split the hexagon into three lines
  .split('\n').forEach((line, index) => {
    // and for each line
    ;[...line].forEach((char, j) => {
      // if the cursor position (x, y) translated
      // by (index, j) is not already part of a hexagon
      // then replace it with the current (index, j) piece
      // of the hexagon
      /*
         0123
       0  __
       1 /  \
       2 \__/
       
      */
      if ('_/\\'.indexOf(a[x + index][y + j]) < 0)
        a[x + index][y + j] = char
    })
  })
  
  // `up` represents the next hexagon
  // if true, the next hexagon will be drawn attached to
  // the top right edge of the current hexagon
  if (up) {
    x -= 1
  // otherwise, it'll be drawn attached to the bottom right edge
  } else {
    x += 1
  }

  // move three columns to the right
  y += 3
  // change directions
  up = !up

  // if within the right boundary of the 51x51 matrix,
  // move back to the left edge and down 2 rows
  // and draw the next hexagon as an `up` hexagon
  if (51 - y <= 3) {
    y = 0
    x += 2
    up = true
  }

  // if hexagons > 0, then recurse and draw the next hexagon
  // otherwise, return the array (join the columns in each row, then join each row
  // by a new line)
  return --hexagons ?
    draw(hexagons, x, y, a, up)
    : a.map(d => d.join('')).join('\n')
}

var n = parseInt(prompt('Number to draw:'))
var r = draw(n, 1, 0, a, true)
document.write('<pre>' + r.replace(/\n/g, '<br>') + '</pre>')


2

रूबी, 120

->n{a=(1..50).map{' '*50}
n.times{|i|x=i%16*3
3.times{|j|a[47-i/16*2-x/3+j][x..x+3]=[' __ ','/  \\','\__/'][j]}}
puts a}

50 स्थानों के 50 स्ट्रिंग्स की एक सरणी बनाता है, फिर हेक्सागोन्स को जोड़ने के लिए 3 लाइनों में 4 वर्णों को प्रतिस्थापित करता है:

" __ "
"/  \"
"\__/"

चूंकि पहली पंक्ति में रिक्त स्थान होते हैं, एक बार जब एक षट्भुज को प्लॉट किया जाता है, तो हम उसके नीचे एक और साजिश नहीं कर सकते, क्योंकि रिक्त स्थान पिछले हेक्सागोन्स को अधिलेखित कर देंगे।

इसलिए हेक्सागोंस को 16x16 rhombus (विकृत आयत) के रूप में नीचे से ऊपर तक जोड़ा जाता है, और नीचे से ऊपर दाईं ओर तिरछा किया जाता है।

" __ "फिर स्ट्रिंग को अतिरिक्त \और के साथ ओवरराइट किया जाएगा/ जहां नेकसेरी के ।

परीक्षण कार्यक्रम में अपराजित

g=->n{
  a=(1..50).map{' '*50}              #make an array of 50 strings of 50 spaces
  n.times{|i|                        #loop through all hexagons
    x=i%16*3                         #x coordinate of top left corner of hexagon, 16 per row
    3.times{|j|                      #loop through 3 lines to print hexagon.
      a[47-i/16*2-x/3+j][x..x+3]=    #47-i/16*2 : start at the bottom and work up. each row is 2 lines high and contains 16 hexagons. x/3 : slant upwards as the row moves right. 
       [' __ ','/  \\','\__/'][j]    #These are the symbols for each of the 3 lines required for a hexagon. [x..x+3] defines which characters have to be replaced in each string.
    }      
  }
  puts a                             #print to stdout
}

N=gets.to_i
g.call(N) 

विशिष्ट उत्पादन (n = 250)

कुल 50 बनाने के लिए यहां शीर्ष पर व्हॉट्सएप की कुछ और पंक्तियां होनी चाहिए, लेकिन मुझे नहीं पता कि उन्हें शामिल करने के लिए स्टैटेक्सचेंज को प्रारूपित करने का कोई तरीका है या नहीं।

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