बहुत ही सरल त्रिकोण


47

एक प्रोग्राम या फ़ंक्शन लिखें जो एक सकारात्मक पूर्णांक (स्टड, कमांड लाइन, या फ़ंक्शन आर्ग) के माध्यम से लेता है और प्रिंट करता है या इनमें से कई छोटे त्रिकोणों को एक साथ वापस लौटाता है, बारी-बारी से जो वे इंगित करते हैं:

 /\
/__\

यदि इनपुट है तो यह एकमात्र त्रिभुज आउटपुट है 1

यदि इनपुट है 2, तो आउटपुट है

  ____
 /\  /
/__\/

यदि इनपुट है 3, तो आउटपुट है

  ____
 /\  /\
/__\/__\

यदि इनपुट है 4, तो आउटपुट है

  ________
 /\  /\  /
/__\/__\/

और इसी तरह। आपके कार्यक्रम को 2 16 - 1 = 65535 तक इनपुट का समर्थन करना चाहिए ।

विवरण

  • बाईं ओर का त्रिकोण हमेशा ऊपर की ओर इंगित करता है।
  • रिक्त स्थान हो सकते हैं लेकिन अनावश्यक प्रमुख स्थान नहीं हो सकते हैं।
  • एक वैकल्पिक अनुगामी न्यूलाइन हो सकती है।
  • ध्यान दें कि 1आउटपुट के लिए दो लाइनें लंबी हैं लेकिन अन्यथा यह तीन है। यह आवश्यक है।
  • बाइट्स में सबसे कम सबमिशन जीतता है।

जवाबों:


32

पायथ, ४४ ४२

ItQpdd*\_*4/Q2)jbms<*dQhQ,c" /\ "2,\/"__\\

पहली पंक्ति:

ItQpdd*\_*4/Q2)
ItQ           )    If the input is not 1
   pdd             Print two spaces
      *\_*4/Q2     Then groups of 4 underscores, repeated input/2 times.

अन्य दो पंक्तियों को यह देखते हुए उत्पन्न किया जाता है कि दूसरी पंक्ति में इनपुट + और 1 बार बारी " /"- "\ "बारी से इनपुट होते हैं , और तीसरी पंक्ति में एक ही फ़ैशन होता है "/"और "__\"वैकल्पिक होता है।


158
स्ट्राइक 44 अभी भी सामान्य है 44 :(
ऑप्टिमाइज़र

4
42बेशक!
mbomb007

48
@ ऑप्टिमाइज़र: मुझे यह बेहद अचंभित करने वाला लगता है कि 44 की उपस्थिति पर आपके दुःख को प्रश्न या इस उत्तर की तुलना में अधिक वोट मिले हैं ।
एलेक्स ए।

6
बस पार किए गए 44 श्रृंखलाओं में 10 जवाब गहरे मिले
लियो

3
@AlexA। मुझे यह बेहद अचंभित करने वाला लगता है कि 44 की उपस्थिति पर ऑप्टिमाइज़र की उदासी पर आपके मनोरंजन को प्रश्न या इस उत्तर की तुलना में अधिक वोट मिले हैं।
इसहाक

24

एसक्यूएल, 182 175 173 187 बाइट्स

ऐसा नहीं है कि यह कभी सबसे छोटा होगा, लेकिन यह अभी भी sql को कम करने की कोशिश कर रहा है;) lol मैंने यह Oracle 11 में किया था, हालाँकि, ये मूल SQL होना चाहिए। [संपादित करें] जैसा कि बताया गया है, मैंने उस समय लागू नहीं किया था जब इनपुट = १ नियम - केवल २ लाइनें दिखाते हैं। इसे करने के लिए एक बेहतर तरीका के बारे में सोच भी नहीं सकते, हालांकि, मैंने v लॉजिक को संशोधित करके एक युगल बाइट्स को बचा लिया;) समय से पहले 2 जोड़ने से एक जोड़े बाइट्स को बाद में दोहराने के लिए नहीं होने से बचाता है [/ संपादित करें]

select decode(&i,1,'',rpad('  ',v,'____')||z)||rpad(' /',v,'\  /')||decode(y,1,'\')||z||rpad('/',v-1,'__\/')||decode(y,1,'__\')from(select 2+floor(&i/2)*4v,mod(&i,2)y,chr(10)z from dual);

[edit1] ने कुछ अनावश्यक स्थान हटा दिए [/ edit1] [edit2] बदल दिए और & # यह 2 वर्णों को काटता है, लेकिन उपयोगकर्ता को दो बार # त्रिकोण के इनपुट के लिए मजबूर करता है ...: PI को मेरी "अच्छी कोडिंग आदतों" का उपयोग करके एहसास हुआ कि && मैं 2 बाइट्स खर्च कर रहा था !! डर!! [/ EDIT2]

स्पष्टीकरण (नोट: मैं इस स्पष्टीकरण में && 1 का उपयोग करता हूं, इसलिए यह केवल एक बार संकेत देता है, और ऊपर दिया गया 1 कोड स्थान बचाता है, लेकिन कई बार संकेत देता है;)

 select  -- line 1
     decode(&&1,1,'',   -- don't need line 1 if input is 1
     rpad('  ',v,'____') || z ) || -- every pair of triangles
     -- line 2
     rpad(' /',v,'\  /') ||  -- every pair of triangles
          decode(y,1,'\') || z || -- add the final triangle, input: 1,3,5 etc.
     -- line 3
     rpad('/',v-1,'__\/') ||  -- every pair of triangles
          decode(y,1,'__\')   -- add the final triangle, input: 1,3,5 etc.
from (select 2+floor(&&i/2)*4 v,   -- common multiplier. 4 extra chars for every triangle pair
             mod(&&i,2) y,  -- Flag for the final triangle (odd inputs, 1,3,5, etc)
             chr(10) z  -- CR, here to save space.
        from dual);

उत्पादन

  SQL> accept i
  1
  SQL> /

   /\
  /__\


  SQL> accept i
  2
  SQL> /

    ____
   /\  /
  /__\/


  SQL> accept i
  3
  SQL> /

    ____
   /\  /\
  /__\/__\


  SQL> accept i
  12
  SQL> /

    ________________________
   /\  /\  /\  /\  /\  /\  /
  /__\/__\/__\/__\/__\/__\/


  SQL>

1
यह अंतरिक्ष को हटाने के बाद काम करेगा from? यदि ऐसा है तो आप एक बाइट बचा लेंगे।
एलेक्स ए।

ओह गुड लॉर्ड .. वो नट है। बस यह कोशिश की .. और फिर "शहर में चला गया" क्या रिक्त स्थान मैं अलग कर सकता है ... ऊ यह चूसने वाला अब अपठनीय है .. लेकिन यह अभी भी काम करता है;) lol (मुझे विश्वास नहीं हो सकता कि उपनाम अभी भी उस तरह काम करते हैं .. ऊ हे )
डिट्टो

मैं sooo upvotes पर उलझन में हूँ! ऊँ यह सबसे छोटे आकार के पास कहीं नहीं है .. फिर भी .. ऊपर! ऊँ वाह।
दिनो

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

@ एलेक्स .. कूल, ग्रेवी :) (मैं अगले एक्सेल में यह कोशिश करने वाला हूं ... lol)
Ditto

11

पायथन 2, 89 88 87 85 83 नाम / 81 अनाम

f=lambda n:1%n*("  "+n/2*4*"_"+"\n")+(" /\ "*n)[:2+2*n]+"\n"+("/__\\"*n)[:n-~n+n%2]

(बाइट के लिए @orlp और अन्य तीन के लिए @ एक्सनॉर का धन्यवाद)

यह एक फ़ंक्शन है जो एक इंट में लेता है nऔर पंक्ति-दर-पंक्ति दृष्टिकोण का उपयोग करके त्रिकोण के रूप में रिटर्न करता है।

जैसे print f(10)देता है

  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/

पहली पंक्ति के लिए, (n>1)*हम इसके बजाय का उपयोग करते हैं 1%n*, क्योंकि 1%n0 if n == 1और 1 if है n > 1


1
आप एक चरित्र को बंद कर सकते हैं, में बदल " /\\ "रहे हैं " /\ "
orlp

क्या यह लैम्ब्डा पायथन 3 में भी काम नहीं करता है?
mbomb007

2
@ mbomb007 वहाँ एक मंजिल विभाजन है
Sp3000

@orlp मुझे अभी अनुमति दें, आगे भ्रम को जोड़ने के लिए, लेकिन मेरी टिप्पणी को हटाना;)
FryAmTheEggman

मुझे "\n".join()3 आइटमों के लिए संदेह है , भले ही सूची का उपयोग पहले तत्व को सशर्त रूप से हटाने के लिए किया गया हो। शायद ऐसा ही कुछ b*(x+"\n")+y+"\n"+zकम है?
xnor

7

जावास्क्रिप्ट (ईएस 6), 101 109

बहुत लंबा रास्ता

f=(n,z=a=>a.repeat(n/2))=>(n>1?'  '+z('____')+'\n ':' ')+z('/\\  ',w=' /'[++n&1]+'\n')+w+z('/__\\')+w

व्याख्या

फ़ंक्शन परिभाषा के लिए वसा तीर का उपयोग करना। इसके अलावा कोई {}ब्लॉक नहीं : फ़ंक्शन बॉडी एक एकल अभिव्यक्ति है जो रिटर्न मान है। f=(a,b,c)=>exprके बराबर है

function f(a,b,c)
{
  return expr;
}

एक एकल अभिव्यक्ति के अंदर आप ifया जैसे बयानों का उपयोग नहीं कर सकते हैं var, लेकिन

  • डिफ़ॉल्ट मान वाले पैरामीटर का उपयोग स्थानीय चर के रूप में किया जा सकता है
  • सशर्त अभिव्यक्ति के ?:बजाय अच्छी तरह से काम करते हैंif else
  • आप कॉमा ऑपरेटर या फ़ंक्शंस के लिए अप्रयुक्त पैरामीटर के रूप में बेहतर का उपयोग करके अधिक सबएक्सप्रेस जोड़ सकते हैं। इस मामले में कार्य का wदूसरा (अप्रयुक्त) पैरामीटर कार्य हैz

हम fफ़ंक्शन को फिर से लिख सकते हैं

f = function(n) {
  var z = function(a) { // use current value of n (that changes)
    return a.repeat(n/2);
  };
  var result;
  if (n > 1) {
    result = '  ' + z('____') + '\n '; // top row if more than 1 triangle
  else
    result = ' '; // else just the blank
  ++n; // increase n, so invert even/odd
  w = ' /'[n&1]+'\n'; //  blank if n is now even, else '/' if n is now odd
  // the next rows will end in "/\" or "\  /" based on n even/odd
  result +=  z('/\\  ') + w; // offset by the blank char added before
  result += z('/__\\') + w;
  return result;
}

फ़ायरफ़ॉक्स / फायरबग कंसोल में टेस्ट करें

console.log(f(1),f(2),f(3),f(4),f(9))

उत्पादन

 /\   
/__\ 

  ____
 /\  /
/__\/

  ____
 /\  /\   
/__\/__\ 

  ________
 /\  /\  /
/__\/__\/

  ________________
 /\  /\  /\  /\  /\   
/__\/__\/__\/__\/__\ 

अच्छी तरह से किया! मैंने इसे दूर करने के लिए कल बहुत लंबा समय बिताया और सर्वोत्तम तरीके से 109 को विभिन्न तरीकों से पुन: पेश करने में कामयाब रहा। -8 काफी जंप है।
डॉकमैक्स

ठंडा। क्या आप एक स्पष्टीकरण पोस्ट कर सकते हैं? मैं पूरी तरह से समझ में नहीं आताw
BadHorsie

@BadHorse स्पष्टीकरण जोड़ा गया (वास्तव में, इस बार)
edc65

ब्याज के बिना मैंने इसे रिक्त स्थान के बिना करने की कोशिश की और n=>(n>1?' '+'____'.repeat(n/2)+'\n':'')+' /\\ '.repeat(n).slice(0,n*2+2-n%2)+'\n'+'/__\\'.repeat(n).slice(0,n*2+1+n%2)119 के साथ आया (जानबूझकर अपने जवाब से मिलान करने के लिए टेम्पलेट स्ट्रिंग्स आदि का उपयोग नहीं किया गया)।
नील


6

हास्केल 155 153 153 139 131 बाइट्स

मुझे थोड़ा अलग दृष्टिकोण मिला जो मेरी मूल विधि से छोटा था। मेरा मूल प्रयास नीचे संरक्षित है। पहले की तरह, गोल्फ टिप्स की सराहना की जाती है।

m n=unlines.dropWhile(=="  ").z["  "," /","/"].foldr1 z$map t[1..n]
t n|odd n=["","\\","__\\"]
t _=["____","  /","/"]
z=zipWith(++)

गोल्फ टिप्स के लिए निमी को धन्यवाद।


पिछला प्रयास 197 179 बाइट्स

t n=putStr.unlines.dropWhile(all(==' ')).z(flip(++))(if odd n then["","\\","__\\"]else repeat"").z(++)["  "," /","/"].map(take(4*div n 2).cycle)$["____","\\  /","__\\/"]
z=zipWith

4
गोल्फ के लिए कुछ संकेत: (mod n 2)==0है even nया बेहतर उपयोग odd nऔर स्वैप thenऔर elseहिस्सा है। concat.take(div n 2).repeatऐसा take(4*div n 2).cycleइसलिए है क्योंकि सभी सूची तत्व लंबाई के हैं 4. लंबे नामों वाले कार्यों के लिए संक्षिप्त नाम निर्दिष्ट करें, जैसे z=zipWith- फिर उपयोग करें z। आप कुछ स्थानों को निकाल सकते हैं ...repeat""else[...
नीमी

@nimi आपके संकेत के लिए धन्यवाद! उनका उपयोग करते हुए, मैं 179 बाइट्स के लिए अपने मूल समाधान को गोल्फ करने में सक्षम था। अपने दृष्टिकोण पर पुनर्विचार करके, मैं अपने समाधान को 155 बाइट्स तक कम करने में सक्षम था।
आख-मोपर्क

1
संकेत, भाग II: foldr z["","",""]है foldr1 z, क्योंकि तह की सूची कभी खाली नहीं होती है। इसके बजाय all(==' ') आप उपयोग कर सकते हैं ==" "(<- दो रिक्त स्थान के बीच में), क्योंकि इसका उपयोग n = 1 के मामले में खाली लाइन को हटाने के लिए किया जाता है और यहां पहली पंक्ति है " "। की पहली परिभाषा tएक पंक्ति में लिखी जा सकती है t n|odd...:।
नीम

4

CJam, 73 68 63 62 60 बाइट्स

यह निश्चित रूप से कुछ गोल्फ की जरूरत है ...

S2*l~:I2/'_4**N]I(g*S"\\  /"'\{I2md@*@@*'/\@}:F~N"__\\/"_W<F

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

व्याख्या

"Print the first line:";
S2*l~:I2/'_4**N]I(g*

S2*                  "Push a string with 2 spaces.";
   l~:I              "Read and eval the input, store it in I.";
       2/            "Divide by two to get the number of top segments.";
         '_4**       "Push '____' and repeat it by the number of segments.";
              N]     "Push a newline and wrap everything in an array.";
                I(g* "Get sign(I-1) and repeat the array that often. This is a no-op
                      for I > 1 but otherwise empties the array.";

"Print the other two lines. The basic idea is to define block which takes as arguments
 a repeatable 4-character string as well as another string which only gets printed for
 even I.";
S"\\  /"'\{I2md@*@@*'/\@}:F~N"__\\/"_W<F

S                                        "Push a space.";
 "\\__/"'\                               "Push the string '\__/' and the character \.";
          {             }:F~             "Store this block in F and evaluate it.";
           I2md                          "Get I/2 and I%2 using divmod.";
               @*                        "Pull up the second argument and repeat it I%2
                                          times. This turns it into an empty string for
                                          even I.";
                 @@                      "Pull up I/2 and the 4-character string.";
                   *                     "Repeat the string I/2 times.";
                    '/\@                 "Push a / and reorder the three line parts.";
                            N            "Push a newline.";
                             "__\\/"_W<F "Call F again, with '__\/' and '__\'.";

4

जूलिया, 115 बाइट्स

n->(m=2;p=println;k=n%2>0?m+1:m;e=m<k?"":"/";t=" /\\ ";b="/__\\";if n>1 p("  "*"_"^4m)end;p(t^k*" "*e);p(b^k*e))

यह एक अनाम फ़ंक्शन बनाता है जो पूर्णांक को स्वीकार करता है और त्रिकोण को प्रिंट करता है। इसे कॉल करने के लिए, इसे एक नाम दें, जैसे f=n->(...)

असंगठित + स्पष्टीकरण:

function f(n)

    m = n ÷ 2                    # Number of upside down triangles
    p = println                  # Store println function to save space
    k = n % 2 > 0 ? m + 1 : m    # Number of right side up triangles
    e = m < k ? "" : "/"         # n even? End lines with a /

    # Top of the triangle
    t = " /\\ "

    # Bottom of the triangle
    b = "/__\\"

    # Print the bottoms of any upside down triangles
    # * performs string concatenation
    # ^ performs string repetition
    if n > 1
        println("  " * "_"^4m)
    end

    # Print the triangle tops (these have two trailing spaces
    # if the last triangle isn't upside down)
    println(t^k * " " * e)

    # Print the triangle bottoms
    println(b^k * e)
end

उदाहरण आउटपुट:

julia> for i = 1:10 f(i) end
 /\  
/__\
  ____
 /\  /
/__\/
  ____
 /\  /\  
/__\/__\
  ________
 /\  /\  /
/__\/__\/
  ________
 /\  /\  /\  
/__\/__\/__\
  ____________
 /\  /\  /\  /
/__\/__\/__\/
  ____________
 /\  /\  /\  /\  
/__\/__\/__\/__\
  ________________
 /\  /\  /\  /\  /
/__\/__\/__\/__\/
  ________________
 /\  /\  /\  /\  /\  
/__\/__\/__\/__\/__\
  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/

मैं बहुत चकित हूँ कि यह इतना लंबा है। मुझे यकीन है कि गोल्फ के अवसर बहुत अच्छे हैं, लेकिन वे मेरे लिए फिलहाल स्पष्ट नहीं हैं। अगर आपके पास कोई सुझाव है या आप कोई और स्पष्टीकरण चाहते हैं तो मुझे बताएं!


3

CJam, 68 62 60 बाइट्स

जहां तक ​​मैं देख सकता हूं, यह अन्य सीजेएम समाधान की तुलना में पूरी तरह से अलग दृष्टिकोण है। यह बहुत गोल्फ हो सकता है।

"/__\\ /\\"4/]ri:R(['/"  /"'_4*"__\\"'\L]3/R*<+zR1>SS+*\W%N*

इसे यहाँ ऑनलाइन आज़माएँ


3

C # 190

void f(int n){string s=(n>1)?"\n  ":"",t=" /",u = "/";bool b=true;int m=n;while(m-->0){s+=(n>1&&b&&m>0)?"____":"";t+=b?"\\":"  /";u+=b?"__\\":"/";b=!b;}Console.Write("{0}\n{1}\n{2}",s,t,u);}

Ungolfed

void f(int n)
{
string s = (n > 1) ? "\n  " : "", t = " /", u = "/";
bool b = true;
int m = n;
while(m-->0)
{
s += (n > 1 && b && m>0) ? "____" : "";
t += b ? "\\" : "  /";
u += b ? "__\\" : "/";
b = !b;
}
Console.Write("{0}\n{1}\n{2}",s,t,u);
}

1
अच्छा काम! ध्यान दें कि whileलूप का उपयोग करना बेहतर नहीं है , बल्कि forलूप का उपयोग करें । इस मामले में आप mलूप इनिशियलाइज़ेशन की परिभाषा में 2 बाइट्स बचा सकते हैं , और b=!bआखिरी चीज़ में जो भी इसे कहते हैं। आप की जगह stringऔर boolसाथ बचत भी कर सकते हैं var। आपको n>1क्लॉज़ के आस-पास "()" की भी आवश्यकता नहीं है , और s+=क्लॉज़ में आप ग़ैर-शॉर्ट सर्किटिंग का उपयोग कर सकते हैं, &बजाय &&इसके कि कोई साइड-इफ़ेक्ट या डेरेफेरेंस न हो। अंत में, 1>0की तुलना में कम है true;)
विजुअलमेल

3

सी #, 257 183 बाइट्स

void C(int t){int i;var n="\r\n";var s="  "+string.Join("____",new string[1+t/2])+n;for(i=0;i++<=t;)s+=i%2<1?"\\ ":" /";s+=n;for(i=0;i++<=t;)s+=i%2<1?"__\\":"/";Console.WriteLine(s);}

संपादित करें: @VisualMelon की युक्तियों के लिए धन्यवाद, 74 बाइट्स सहेजे गए।

मुझे पता है कि यह गोल्फ में सर्वश्रेष्ठ भाषा से बहुत दूर है, लेकिन मैं प्रतियोगिता जीतने के बजाय C # की विभिन्न बारीकियों के बारे में जानने में दिलचस्पी रखता हूं। यह मूल रूप से इस पायथ उत्तर का एक बंदरगाह है ।

मैं सोच रहा हूं कि छोरों को आगे बढ़ाया जा सकता है, लेकिन मुझे यकीन नहीं है कि कैसे, उनके भीतर अंतर्निहित तृतीयक बयान दिए गए हैं।

उदाहरण (1, 2, 3, 10):

 /\   
/__\  
  ____
 /\  /
/__\/
  ____
 /\  /\ 
/__\/__\
  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/

Ungolfed:

void C2(int t)
{
    int i;
    var n="\r\n";
    var s="  "+string.Join("____",new string[1+t/2])+n;
    for(i=0;i++<=t;)
        s+=i%2<1?"\\ ":" /";
    s+=n;
    for(i=0;i++<=t;)
        s+=i%2<1?"__\\":"/";
    Console.WriteLine(s);
}

जबकि StringBuilders तेज़ और प्यारे हैं, यदि आप एक कम बाइट गिनती चाहते हैं, तो s+=आपका मित्र है। वास्तव में, आप छोरों के लिए थोड़ा और अधिक कॉम्पैक्ट बनाया जा सकता है। ऑपरेटरों ++और --ऑपरेटरों की खुशी / आतंक का मतलब है कि आप सशर्त जांच में अधिकांश काम कर सकते हैं for(i=0;i++<=t;)(यह जाँच यदि iकम है या इसके बराबर है t तो वेतन वृद्धि)। आप int iलूप के लिए बाहर को परिभाषित करने के लिए अच्छी तरह से करेंगे, और इसका पुन: उपयोग करेंगे, और चूंकि आप गारंटी दे सकते हैं कि iकभी भी नकारात्मक नहीं होगा, i%2==0इसके लिए तैयार किया जा सकता है i%2<1। इन परिवर्तनों के साथ, एक उप 200byte स्कोर आसानी से प्राप्त होता है।
VisualMelon

1
इसके अलावा, मुझे संदेह है कि आपने इसे LINQPad या इसी तरह लिखा है, क्योंकि Enumerableआमतौर पर पहुंच के लिए एक using System.Linqनिर्देश की आवश्यकता होती है , और मुझे लगता है कि यह आमतौर पर इरादा है कि इस तरह के खंड शामिल हैं। हालाँकि , इस उदाहरण में केवल LINQ को बदला जा सकता है var s=" "+string.Join("____",new string[1+t/2])+n;जिसमें कोई LINQ नहीं है, और यह वर्तमान कोड से कम है;) यह बहुत सारे अशक्त तार को एक साथ जोड़ता है जो हम वास्तव में परवाह करते हैं, "____" (1 + t / 2) जा रहा है क्योंकि हम पहले एक और "____" फिट करने के लिए एक और अशक्त स्ट्रिंग की आवश्यकता है)। चर n"\ r \ n" के रूप में घोषित किया गया है।
विजुअलमेल

महान युक्तियाँ! मैं यह भूल गया कि Enumerable को System.Linq की आवश्यकता होगी, मैं इन दिनों मुश्किल से ध्यान देता हूं। लूप टिप के लिए आसान है!
ट्रेंट

थोड़ी देर, लेकिन आप Console.WriteConsole.WriteLine
Metoniem

2

जावा, 185

String f(int n){int i;String s="";if(n>1){s="  ";for(i=0;i<n/2;i++)s+="____";s+='\n';}for(i=0;i<=n;)s+=i++%2<1?" /":"\\ ";s+='\n';for(i=0;i<=n;i++)s+=i%2<1?i<n?"/_":"/":"_\\";return s;}

व्याख्या

String f(int n) {
    int i;
    String s = "";
    if (n > 1) {
        s = "  ";
        for (i = 0; i < n / 2; i++) {
            s += "____";
        }
        s += '\n';
    }
    for (i = 0; i <= n; i++) {
        s += i % 2 < 1 ? " /" : "\\ ";
    }
    s += '\n';
    for (i = 0; i <= n; i++) {
        s += i % 2 < 1 ? i < n ? "/_" : "/" : "_\\";
    }
    return s;
}

2

सी # - 151 146 141 138

@ Bacchusbeale के उत्तर से प्रेरित

string f(int n){string t="\n",s=n>1?"  "+new string('_',n/2*4)+t:"";for(var b=n<0;n-->=0;t+=b?"__\\":"/",b=!b)s+=b?"\\ ":" /";return s+t;}

Ungolfed

    string f(int n)
    {
        string t = "\n", s = n > 1 ? "  " + new string('_', n / 2 * 4) + t : "";
        for (var b = n < 0; n-- >= 0; t += b ? "__\\" : "/", b = !b)
            s += b ? "\\ " : " /";
        return s + t;
    }

1
अच्छा लगा, यह निश्चित नहीं है कि अन्य उत्तरों पर टिप्पणी करने से पहले मैं कैसे चूक गया! यह ओवरलोड new Stringमेरे लिए एक नया है! आपको लगता है कि आपके t=""गोल्फ वाले संस्करण से चूक गए हैं , हालांकि एक बेहतर बात यह है कि इसे t"\ n" के रूप में प्रारंभ किया जाएगा । फॉर-लूप पर "{}" को सेव करके tआप फ्लिप करने के लिए बाइट के एक जोड़े को बचा सकते हैं । bt+=(b=!b)?"/":"__\\"
विजुअलमेलन

1
@ यदि आप tपहले एक जोड़े को बचा सकते हैं तो इससे पहले कि आप परिभाषित करें sऔर tइसके बजाय स्ट्रिंग में जोड़ें "\n";)
विज़ुअलमेल

1

जाओ, 156 144

func f(n int){a,b,c:="  ","","";for i:=0;i<=n;i++{if i<n/2{a+="____"};if i%2<1{b+=" /";c+="/"}else{b+=`\ `;c+=`__\`}};print(a+"\n"+b+"\n"+c)}

Ungolfed:

func f(n int) {
    a, b, c := "  ", "", ""   // Initialize 3 accumulators
    for i := 0; i <= n; i++ { // For each required triangle
        if i < n/2 {          // Yay integer math
            a += "____"
        }
        if i%2 < 1 {          // Even, uneven, (are we drawing up or downslope?)
            b += " /"
            c += "/"
        } else {
            b += `\ `
            c += `__\`
        }
    }
    print(a + "\n" + b + "\n" + c)
}

यहाँ केवल वास्तविक चाल (और यह एक अच्छा भी नहीं है) 3 संचयकों का उपयोग कर रहा है, इसलिए मैं 1 लूप तक समाधान को कम कर सकता हूं।

यहां कोड चलाया जा सकता है: http://play.golang.org/p/urEO1kIjKv


बस के c += `__\` बजाय का उपयोग करेंif i<n{c+="_"}
MarcDefiant

@MarcDefiant अपडेट किया गया, धन्यवाद
क्रिस्टोफ़र सॉल-स्टॉरगार्ड

1

> <> (मछली) , 215 183 156 बाइट्स

संपादित करें: नोटपैड ++ मुझे सीआर के कारण 5 अतिरिक्त बाइट्स दे रहा था, इसलिए तदनुसार संशोधित गणना

थोड़ा अधिक गोल्फ वाला, लेकिन यह मेरा अब तक का पहला मछली कार्यक्रम है> _ <1 त्रिकोण के लिए रिक्त पहली पंक्ति नहीं होने की आवश्यकता ने कार्यक्रम का आकार दोगुना कर दिया।

99+0{:}1=?.~~"  "oo:2,:1%-v
-1  oooo  "____"  v!?  )0:/!
" /"oa~~.?=1}:{24~/:oo
v!?)0:-1o"\"v!?)0:/!-1ooo"  /"
/v   ~o"/"oa/!
!\:0)?!;"\__"ooo1-:0)?!;"/"o1-

Http://fishlanguage.com/ पर परीक्षण कर सकते हैं (Int लंबाई के लिए प्रारंभिक स्टैक पर)

स्पष्टीकरण:

       Start with initial stack as input number
99+0   Push 18 and 0 to the top of the stack
{:}    Shift the stack to the left (wraps), copy the top value, and shift it back to the left (i.e. copy bottom of stack to the top)
1=     Check to see if the top of the stack is equal to 1, pushes 1 for true, 0 for false
?.     If top of stack is zero, skip the ., otherwise jumps to x,y coordinates on top of stack (18,0). This skips the next 8 instructions
~~     Pop the top 2 values from the stack (if they're not popped by the jump)
"  "   Push the string literal "  " onto the stack
oo     Pop the top two values of stack and output them as characters
:2,    Copy top value of stack, ad divide by 2
:1%-   Since ><> uses float division, and doesn't have >= notation, remove the decimal part (if exists)
v      Redirect pointer down
/      Redirect pointer left
:0)    Copy top of stack, and see if its greater than 0 (1 for true, 0 for false)
?!v    If top of stack is non-zero, then ! is executed, which skips the next instruction (redirect), otherwise, code is redirected
"____" Push the literal "____" to the stack
oooo   Pop the top four values of stack and output them as characters
1-     Decrement the top of the stack by 1
!/     Ignore the redirect action.
       When the loop gets to 0, it goes to next line, and gets redirected to the left.
~      Pops the top of the stack (0 counter)
42     Pushes 4 and 2 to the stack
{:}    As before, copies the bottom of the stack to the top
1=?.   Also as before, if the initial value is 1, jump to (2,4) (skipping next 4 instructions
~~     Pop 2 values from stack if these instructions haven't been skipped
ao     Push 10 onto the stack and output it as a character (LF)
"/ "oo Push the literal "/ " onto the stack and output it
://    Copies the top of the stack then redirects to the line below, which then redirects to the left
:0)    Copies top of the stack and compares if its greater than 0
?!v    If it is, redirect to next line
"\"o   Push "\" to stack, then output it as a character
1-     Decrement top value of stack
:0)?!v If loop is not greater than 0, redirect to next line
       Either mode of redirect will loop to the left, and (potentially) skip the far right redirect because of the !
ao     Push 10 to stack and output it as a character (LF)
"/"o~  Push "/" to stack, then output it as a character. Pop top value of stack (the 0 from previous loop)
v      Redirects to next line, which then redirects to the right
:0)?!; If the top of the stack is not greater than 0, terminate (;)
"\__"  Pushes "\__" to the stack
ooo    Outputs top 3 stack values as characters ("__\")
1-     Decrement top of stack by 1
:0)?!; If the top of the stack is not greater than 0, terminate (;)
"/"o   Push "/" to top of stack then output it as a character
1-     Decrement top of stack by 1
!\     Ignore the redirect

1
अच्छा दुभाषिया! क्या आपने खुद बनाया है?
233 पर 253

थोड़ा भी नहीं। : PI ने इसका इस्तेमाल बड़े पैमाने पर खुद को भाषा सिखाने के लिए ... और डीबग करने के लिए किया। मैंने बस भाषा को इधर-उधर घूमते देखा और सोचा कि यह बहुत दिलचस्प है (मार्बल्स को आज़माना चाहते हैं)।
फोंगॉइड

1

पर्ल 109 108 106

$i=<>;$t=join$/,$i-1?"  "."_"x($i/2)x4:(),$m.=(" /")[$_&1]||"\\ ",$b.=("/")[$_&1]||"__\\"for 0..$i;print$t

मुझे लगता है कि यह मेरे पहले गोल्फ के लिए ठीक है, मैंने पहली पंक्ति के लिए विन्स के अनुभाग का उपयोग किया, मेरे बाकी कोड के साथ 1 त्रिकोण के साथ नई लाइन की समस्या को हल करने के लिए।

अब देखना है कि क्या मैं इसे छोटा कर सकता हूँ :)

संपादित करें : व्हॉट्सएप

संपादित 2 : के "\n"साथ बदल दिया$/

1:
 /\
/__\

4:
  ________
 /\  /\  /
/__\/__\/

1

C89, 150

r(p,q,n)int*p,*q;{n?printf(p),r(q,p,n-1):puts(p);}main(c,v)int**v;{c=atoi(v[1]);if(c>1)printf("  "),r("","____",c-1);r(" /","\\ ",c);r("/","__\\",c);}

एक अनप्लग्ड संस्करण:

r(p, q, n) char *p, *q; {
    if(n > 0) {
        printf(p);
        r(q, p, n-1); /* swap p and q */
    } else {
        puts(p);
    }
}

main(c, v) char**v; {
    c = atoi(v[1]);
    if(c>1) {
        printf("  ");
        r("", "____", c - 1);
    }
    r(" /", "\\ ", c);
    r("/", "__\\", c);
}

उत्पादन:

$ seq 1 3 10 | xargs -n1 ./triangles
 /\
/__\
  ________
 /\  /\  /
/__\/__\/
  ____________
 /\  /\  /\  /\
/__\/__\/__\/__\
  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/

यदि मैं प्रवेश करता हूं तो स्टैक ओवरफ्लो हो जाता है 65535(लेकिन यदि आप इसके साथ संकलन नहीं करते हैं -O3!), लेकिन सैद्धांतिक रूप से इसे काम करना चाहिए ;-)

संपादित करें: कार्यक्रम अब इस आवश्यकता को पूरा करता है कि यदि 1प्रोग्राम 2 को संपादित किया जाता है तो केवल दो पंक्तियों को आउटपुट किया जाना चाहिए :int* इसके बजाय का उपयोग करेंchar*


आप घोषणा कर सकते हैं mainजैसे main(c,v)**v;कि काम करता है।
फूज़ेक्नल

आप होने से कुछ बचा सकता है अगर मैं सोच रहा था cया nएक वैश्विक चर के रूप में है, तो आप करने के लिए कि पैरामीटर पारित करने के लिए की जरूरत नहीं है r()। मैं के साथ अपने जवाब अनुपालन नहीं लगता किNote that for 1 the output is two lines long but otherwise it's three. This is required.
स्तर नदी सेंट

@FUZxxl दुर्भाग्य से यह काम नहीं करता है :-(error: expected declaration specifiers before ‘*’ token main(c,v)**v;{
मार्कडिफिएंट

@steveverrill ने इसे ठीक कर दिया, लेकिन मुझे कोड को हल्का करने की आवश्यकता थी। वैश्विक के साथ एक समाधान नहीं मिल सकता है nया cयह छोटा है।
मार्कडेफिएंट

@MarcDefiant आप एक पास करने में सक्षम थे int**?
फ़ूजक्कल

1

C ++ stdlib, 194 बाइट्स

string f(int n){char* p[]={"____"," /\\ ","/__\\"};int x[]={(n-n%2)*2,n*2+2-n%2,n*2+1+n%2},i,j;string s=n>1?"  ":"";for (i=n>1?0:1;i<3;s+=++i<3?"\n":"")for (j=0;j<x[i];)s+=p[i][j++%4];return s;}

परीक्षण कार्यक्रम:

#include <string>
#include <iostream>

using namespace std;

string f(int n)
{
    char* p[]={"____"," /\\ ","/__\\"};
    int x[]={(n-n%2)*2,n*2+2-n%2,n*2+1+n%2},i,j;
    string s=n>1?"  ":"";
    for (i=n>1?0:1;i<3;s+=++i<3?"\n":"")
        for (j=0;j<x[i];)
            s+=p[i][j++%4];
    return s;
}

int main(int argc, char* argv[])
{
    cout << f(10);
    return 0;
}

1

बैश, 166 127 125 119 105 बाइट्स

printf -v l %$[$1/2]s;(($1%2))&&r= j=$l\ ||r=/ j=$l;echo "  ${l// /____}
${j// / /\ } $r
${j// //__\\}"$r

एक समारोह में:

triangle() {
    printf -v l %$[$1/2]s;(($1%2))&&r= j=$l\ ||r=/ j=$l;echo "  ${l// /____}
${j// / /\ } $r
${j// //__\\}"$r
}

कुछ प्रस्तुतियों के साथ:

for i in {1..5} 10 31;do
    paste -d\  <(
        figlet -fsmall $i |
             sed 's/^/         /;s/^ *\(.\{10\}\)$/\1  /;$d'
    ) <(triangle $i)
  done

प्रस्तुत करना हो सकता है (यदि आपके पास अंजीर स्थापित है):

        _      
       / |    /\  
       | |   /__\
       |_|   
      ___      ____
     |_  )    /\  /
      / /    /__\/
     /___|   
      ____     ____
     |__ /    /\  /\  
      |_ \   /__\/__\
     |___/   
     _ _       ________
    | | |     /\  /\  /
    |_  _|   /__\/__\/
      |_|    
      ___      ________
     | __|    /\  /\  /\  
     |__ \   /__\/__\/__\
     |___/   
   _  __       ____________________
  / |/  \     /\  /\  /\  /\  /\  /
  | | () |   /__\/__\/__\/__\/__\/
  |_|\__/    
    _____      ____________________________________________________________
   |__ / |    /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  
    |_ \ |   /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\
   |___/_|   

2 चरों को बचाएं यदि चर के बजाय इनपुट से $1: 103

printf -v l %$[i/2]s;((i%2))&&r= j=$l\ ||r=/ j=$l;echo "  ${l// /____}
${j// / /\ } $r
${j// //__\\}"$r

लूप में:

for i in {1..3} {31..34};do
    [ $i == 31 ] && figlet -fsmall ...
    paste -d\  <(
        figlet -fsmall $i |
            sed 's/^/         /;s/^ *\(.\{10\}\)$/\1   /;$d'
    ) <(
        printf -v l %$[i/2]s;((i%2))&&r= j=$l\ ||r=/ j=$l;echo "  ${l// /____}
${j// / /\ } $r
${j// //__\\}"$r
    )
  done

प्रस्तुत करेगा (लगभग):

        _       
       / |     /\  
       | |    /__\
       |_|    
      ___       ____
     |_  )     /\  /
      / /     /__\/
     /___|    
      ____      ____
     |__ /     /\  /\  
      |_ \    /__\/__\
     |___/    


 _ _ _ 
(_|_|_)

    _____       ____________________________________________________________
   |__ / |     /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  
    |_ \ |    /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\
   |___/_|    
  _______       ________________________________________________________________
 |__ /_  )     /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /
  |_ \/ /     /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/
 |___/___|    
  ________      ________________________________________________________________
 |__ /__ /     /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  
  |_ \|_ \    /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\
 |___/___/    
 _____ _        ____________________________________________________________________
|__ / | |      /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /
 |_ \_  _|    /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/
|___/ |_|     

1
आपको एक अंजीर कार्यान्वयन कोडगुल्फ़ के बारे में एक प्रश्न पोस्ट करना चाहिए!
सेरगिओल

1

चारकोल , 27 बाइट्स (नॉनकमेटिंग)

गैरकंपनी क्योंकि भाषा चुनौती का सामना करती है।

FEN﹪鲫P×⁴_↗⊗¬ι↓P↘²↘⊗ι↑P↗⊗ι

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

FEN﹪鲫

nउन पर लंबाई और लूप के वैकल्पिक बिट्स की एक सूची बनाएं ।

P×⁴_

____कर्सर को हिलाए बिना ड्रा करें ।

↗⊗¬ι↓

पहले और हर दूसरे त्रिकोण पर, बाईं /ओर आकर्षित करें ।

P↘²

\कर्सर को बिना हिलाए साइड को ड्रा करें ।

↘⊗ι↑

दूसरे और हर दूसरे त्रिकोण पर, \कर्सर को स्थानांतरित करने के लिए बाईं ओर फिर से खींचें ।

P↗⊗ι

दूसरी और हर दूसरे त्रिभुज पर, /कर्सर को बिना हिलाए, दाईं ओर खींचें ।


1
जवाबों को अब गैर-प्रतिस्पर्धा के रूप में चिह्नित नहीं किया जाना चाहिए
जो किंग

1

पावरशेल , 116 95 बाइट्स

Mazzy और ASCII के लिए बड़ा धन्यवाद केवल 21 बाइट बचाने के लिए

param($n)@("  "+"_"*4*($x=$n-shr1))[$n-eq1]
" /"+"\  /"*$x+"\"*($a=$n%2)
"/"+"__\/"*$x+"__\"*$a

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

N = 1 के लिए एक खाली लाइन को अनुमति नहीं है 14 14 बाइट्स की तरह खा लिया । यह समाधान बहुत अधिक बार कोड की एक न्यूनतम राशि के साथ बहुत अधिक चालाक है बहुत बुरा मस्तिष्क है । बैंकर राउंडिंग अभी भी वास्तविक शैतान है।


क्या खाली लाइन की अनुमति नहीं है ???
एएससीआईआई-केवल

@ ASCII- ओपी से केवल 4 गोली बिंदु पढ़ें।
विस्काह


1
@
ASCII-

1
@ mazzy आप पहली पंक्ति उत्पन्न नहीं कर सकते, अन्यथा यह 102
केवल

0

सी, 368 बाइट्स

void p(char* c){printf(c);}
int x(int s,int f){int t=0,p=s;for(int i=0;i<f;i++){if(p==1){t++;p=0;}else{p=1;}}return t;}
int main(int argc,char* argv[]){int t=atoi(argv[1]);if(t>1){p("  ");for(int i=0;i<x(0,t);i++)
{p("____");}p("\n");}for(int i=0;i<x(1,t);i++){p(" /\\ ");}if(t%2==0){p(" /");}p("\n");
for(int i=0;i<x(1,t);i++){p("/__\\");}if(t%2==0){p("/");}p("\n");}

यदि आप #includeबयानों को गिनते हैं तो यह अधिक है , लेकिन यह उनके बिना, चेतावनी के साथ gcc पर संकलित है। मुझे पता है कि यह अब तक सबसे छोटा नहीं है, लेकिन मुझे अभी भी पसंद है कि मैंने इसे सी में किया।


मैक्रो #define p(c)printf(c)आपके फ़ंक्शन से छोटा है। आप फ़ंक्शंस पर रिटर्न प्रकारों को छोड़ सकते हैं (वे डिफ़ॉल्ट रूप से int)। आप फंक्शन को C89इस तरह से भी परिभाषित कर सकते हैं main(c,v)char**v;{}। इसके लिए संक्षिप्त समय हैint main(int c, char** v){}
मार्कडेफिएंट

0

पर्ल (सरल) 131 125 120

काफी सीधा पहला पास:

$i=<>;print join"\n",$i-1?"  "."_"x(4*int($i/2)):(),join("",map{(" /","\\ ")[$_%2]}0..$i),join"",map{("/","__\\")[$_%2]}0..$i

ओह, जो स्पष्ट int की जरूरत है?

$i=<>;print join"\n",$i-1?"  "."_"x($i/2)x4:(),join("",map{(" /","\\ ")[$_%2]}0..$i),join"",map{("/","__\\")[$_%2]}0..$i

0

प्रोलॉग, 126 बाइट्स

A+B:-writef(A,B).
$N:-(N>1,"  %r\n"+['____',N//2];!),(0is N/\1,T='/';T='')," %r%w\n"+['/\\  ',N/2,T],"%r%w\n"+['/__\\',N/2,T].

जैसे आह्वान किया $3

अधिक पठनीय:

triangle(N):-
    (   N > 1
    ->  writef("  %r\n", ['____', N//2])
    ;   true
    ),
    (   0 is N mod 2
    ->  T = '/'
    ;   T = ''
    ),
    writef(" %r%w\n", ['/\\  ', N/2, T]),
    writef("%r%w\n", ['/__\\', N/2, T]).

उदाहरण:

?- findall(N,between(1,10,N),NN), maplist($, NN), !.
 /\  
/__\
  ____
 /\  /
/__\/
  ____
 /\  /\  
/__\/__\
  ________
 /\  /\  /
/__\/__\/
  ________
 /\  /\  /\  
/__\/__\/__\
  ____________
 /\  /\  /\  /
/__\/__\/__\/
  ____________
 /\  /\  /\  /\  
/__\/__\/__\/__\
  ________________
 /\  /\  /\  /\  /
/__\/__\/__\/__\/
  ________________
 /\  /\  /\  /\  /\  
/__\/__\/__\/__\/__\
  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/
NN = [1, 2, 3, 4, 5, 6, 7, 8, 9|...].

0

C #: 1 लाइन LINQ, 198 बाइट्स

string f(int n){return(n>1?"  ":"")+string.Join("\n",new[]{"____"," /\\ ","/__\\"}.Zip(new[]{(n-n%2)*2,n*2+2-n%2,n*2+1+n%2},(s,l)=>string.Join(s,new string[n+1]).Substring(0,l)).Where(x=>x.Any()));}

0

रेटिना , 88 बाइट्स (नॉनकमेटिंग)

गैरकंपनी क्योंकि भाषा चुनौती का सामना करती है।

K`  ____¶ /\  /¶/__\/
%`....$
$+*$&
%`(.+)\1$
$1
(  (____)*)__(¶.*)  /(¶.*)/
$1$3$4
G`\S

इसे ऑनलाइन आज़माएं! स्पष्टीकरण:

K`  ____¶ /\  /¶/__\/

त्रिकोण की एक जोड़ी के साथ इनपुट को बदलें।

%`....$
$+*$&

मूल इनपुट द्वारा त्रिकोणों को गुणा करें।

%`(.+)\1$
$1

त्रिकोण 2 से विभाजित करें।

(  (____)*)__(¶.*)  /(¶.*)/
$1$3$4

बाएँ-आधे आधे त्रिकोण को निकालें।

G`\S

यदि यह खाली है तो पहली पंक्ति को हटा दें।



0

सी (जीसीसी) , 117 115 बाइट्स

-2 सीटिंग के लिए धन्यवाद।

उन सभी कोष्ठकों का सुझाव है कि कुछ कम clunky निश्चित रूप से संभव है।

f(n,i,j){for(j=3-1/n;j--;puts("/"+(n%2|j>1)))for(i=0;i<n+(j<2)>>1;)printf("  %.4s"+2-j*!i++,"/__\\/\\  ____"+j*4);}

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



0

05AB1E , 37 बाइट्स

≠iðð'_I2÷4*×J}„ /„\ ‚I>∍J'/…__\‚I>∍J»

इसे ऑनलाइन आज़माएं या पहले 10 आउटपुट सत्यापित करें

स्पष्टीकरण:

i            } # If the (implicit) input is NOT 1:
                #   i.e. 1 → 0 (falsey)
                #   i.e. 5 → 1 (truthy)
  ðð            #  Push two spaces "  "
    '_         '#  Push string "_"
      I         #  Push the input
       2÷       #  Integer-divide it by 2
                #   i.e. 5 → 2
         4*     #  And then multiply it by 4
                #   i.e. 2 → 8
           ×    #  Repeat the "_" that many times
                #   i.e. "_" and 8 → "________"
            J   #  Join everything on the stack together to a single string
                #   i.e. "  ________"
 /             # Push string " /"
   \           # Push string "\ "
               # Pair them together: [" /","\ "]
      I>        # Push the input+1
               # Extend the list to that size
                #  i.e. [" /","\ "] and 2 → [" /","\ "]
                #  i.e. [" /","\ "] and 6 → [" /","\ "," /","\ "," /","\ "]
         J      # Join the list together to a single string
                #  i.e. [" /","\ "] → " /\ "
                #  i.e. [" /","\ "," /","\ "," /","\ "] → " /\  /\  /\ "
'/             '# Push string "/"
  __\          # Push string "__\"
               # Pair them together: ["/","__\"]
       I>       # Push the input+1
               # Extend the list to that size
                #  i.e. ["/","__\"] and 2 → ["/","__\"]
                #  i.e. ["/","__\"] and 6 → ["/","__\","/","__\","/","__\"]
          J     # Join the list together to a single string
                #  i.e. ["/","__\"] → "/__\"
                #  i.e. ["/","__\","/","__\","/","__\"] → "/__\/__\/__\"
»               # Join the entire stack with a newline delimiter
                #  i.e. " /\ " and "/__\" → " /\ \n/__\"
                #  i.e. "  ________", " /\  /\  /\ " and "/__\/__\/__\"
                #   → "  ________\n /\  /\  /\ \n/__\/__\/__\"
                # (and output the result implicitly)

0

जावा 11, 122 बाइट्स

n->(n>1?"  "+"_".repeat(n/2*4)+"\n":"")+" /\\ ".repeat(n).substring(0,++n*2)+"\n"+"/__\\".repeat(n).substring(0,n/2*4+n%2)

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

स्पष्टीकरण:

n->                   // Method with integer parameter and String return-type
  (n>1?               //  If the input is larger than 1:
    "  "              //   Return two spaces
    +"_".repeat(      //   Appended with "_" repeated the following amount of times:
          n/2         //    The input integer-divided by 2
             *4)      //    And then multiplied by 4
    +"\n"             //   Appended with a newline
   :                  //  Else:
    "")               //   Return nothing
  +" /\\ ".repeat(n)  //  Appended with " /\ " repeated the input amount of times
    .substring(0,     //   After which we only leave the first `x` characters, where `x` is:
      ++n             //    Increase the input by 1 first with `++n`
         *2)          //    And then multiply it by 2
                      //     i.e. For input 1, `x` becomes 4 here
                      //     i.e. For input 6, `x` becomes 14 here
  +"\n"               //  Appended with a newline
  +"/__\\".repeat(n)  //  Appended with "/__\" repeated the input amount of times
    .substring(0,     //   After which we only leave the first `y` characters, where `y` is:
      n/2             //    The input+1 integer-divided by 2
         *4           //    Then multiplied by 4
           +n%2)      //    And then the input+1 modulo-2 added
                      //     i.e. For input 1, `y` becomes 4 here
                      //     i.e. For input 6, `y` becomes 13 here
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.