बिना किसी त्रिभुज के एक त्रिभुज बनाएँ


44

एक छोटे बच्चे के रूप में, मुझे इन खिलौनों के साथ खेलना बहुत पसंद था:

यहाँ छवि विवरण दर्ज करें

वे शायद इनका उपयोग कला के लिए करना चाहते थे, लेकिन मैंने हमेशा गणित के लिए इनका उपयोग किया! भग्न, पैटर्न, आदि। एक बार, मुझे यह चुनौती दी गई थी:

हरे रंग की त्रिकोण टाइलों का उपयोग किए बिना एक त्रिकोण बनाएं।

इस चुनौती ने मुझे सबसे लंबे समय तक स्टंप किया, जब तक कि मैं सिर्फ 3 ट्रेपोज़िड्स के साथ ऐसा करने के लिए वास्तव में सुंदर और सरल तरीके से ठोकर खाई:

  /\  
 /_/\ 
/__\_\

अब, इस त्रिभुज को लें, और इसे घुमाएँ:

______         
\ \__/         
 \/ /          
  \/ 

इन दो त्रिकोणों का उपयोग करके, हम उनमें से बड़े त्रिकोणों का निर्माण कर सकते हैं। यहाँ ऊंचाई 2 का एक त्रिकोण है:

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

और यहाँ ऊंचाई 3-7 के त्रिकोण हैं:

#3
        /\
       /_/\
      /__\_\
     /\ \__/\
    /_/\/ /_/\
   /__\_\/__\_\
  /\ \__/\ \__/\
 /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\

#4
           /\
          /_/\
         /__\_\
        /\ \__/\
       /_/\/ /_/\
      /__\_\/__\_\
     /\ \__/\ \__/\
    /_/\/ /_/\/ /_/\
   /__\_\/__\_\/__\_\
  /\ \__/\ \__/\ \__/\
 /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\

#5
              /\
             /_/\
            /__\_\
           /\ \__/\
          /_/\/ /_/\
         /__\_\/__\_\
        /\ \__/\ \__/\
       /_/\/ /_/\/ /_/\
      /__\_\/__\_\/__\_\
     /\ \__/\ \__/\ \__/\
    /_/\/ /_/\/ /_/\/ /_/\
   /__\_\/__\_\/__\_\/__\_\
  /\ \__/\ \__/\ \__/\ \__/\
 /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\

#6
                 /\
                /_/\
               /__\_\
              /\ \__/\
             /_/\/ /_/\
            /__\_\/__\_\
           /\ \__/\ \__/\
          /_/\/ /_/\/ /_/\
         /__\_\/__\_\/__\_\
        /\ \__/\ \__/\ \__/\
       /_/\/ /_/\/ /_/\/ /_/\
      /__\_\/__\_\/__\_\/__\_\
     /\ \__/\ \__/\ \__/\ \__/\
    /_/\/ /_/\/ /_/\/ /_/\/ /_/\
   /__\_\/__\_\/__\_\/__\_\/__\_\
  /\ \__/\ \__/\ \__/\ \__/\ \__/\
 /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\

#7
                    /\
                   /_/\
                  /__\_\
                 /\ \__/\
                /_/\/ /_/\
               /__\_\/__\_\
              /\ \__/\ \__/\
             /_/\/ /_/\/ /_/\
            /__\_\/__\_\/__\_\
           /\ \__/\ \__/\ \__/\
          /_/\/ /_/\/ /_/\/ /_/\
         /__\_\/__\_\/__\_\/__\_\
        /\ \__/\ \__/\ \__/\ \__/\
       /_/\/ /_/\/ /_/\/ /_/\/ /_/\
      /__\_\/__\_\/__\_\/__\_\/__\_\
     /\ \__/\ \__/\ \__/\ \__/\ \__/\
    /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
   /__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
  /\ \__/\ \__/\ \__/\ \__/\ \__/\ \__/\
 /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\

चुनौती

एक प्रोग्राम या फ़ंक्शन लिखें जो संख्या n लेता है और ऊँचाई n के त्रिकोण-कम त्रिकोण को प्रिंट करता है । प्रत्येक पंक्ति पर अनुगामी रिक्त स्थान स्वीकार्य है, और एक अनुगामी या अग्रणी नई रेखा भी स्वीकार्य है। IO किसी भी उचित प्रारूप में हो सकता है। इनपुट एक सकारात्मक पूर्णांक होने के लिए ग्वारेंटेड है, इसलिए आपको नकारात्मक संख्या, दशमलव, गैर-संख्या आदि के बारे में चिंता करने की ज़रूरत नहीं है।

बाइट्स जीत में सबसे छोटा जवाब!


ट्रेपेज़ोइड्स से अधिक ट्रेपोज़ोइड बनाने की कोशिश करें। लंबाई 2 और 3 निश्चित रूप से संभव है (और विस्तार से, फॉर्म 2 के सभी नंबर ^ ^ a * 3 ^ b) (मुझे कैसे पता चलेगा? जब मैं बच्चा था तो उसी तरह के ब्लॉक के साथ खेला गया था।)
कैलक्यूलेटरफैनलाइन

1
@CatsAreFluffy खैर, चूंकि आप त्रिभुजों से बाहर एक ट्रेपोज़ॉइड बना सकते हैं, इसलिए आप निष्कर्ष निकाल सकते हैं कि आप ट्रेपोज़ोइड्स को ट्रेपोज़ोइड्स से बाहर कर सकते हैं। वास्तव में, यदि आप ऊंचाई 3 और 7 के त्रिकोण को देखते हैं, तो आप थोड़े बड़े ट्रेपोज़ॉइड के साथ दोहराए गए पैटर्न को देख सकते हैं।
DJMcMayhem

यह चुनौती वाकई मस्त है। मुझे यह पता चला कि रेटिना में यह कैसे करना है।
mbomb007

@ mbomb007 खुशी है कि आप इसे सुनने के लिए खुशी है! = D यही कारण है कि मैं चुनौतियां लिखता हूं।
DJMcMayhem

2
यह चुनौती मोबाइल ऐप के साथ स्क्रीन पर पूरी तरह से फिट होती है । क्या वह जानबूझकर था? :)
डोडी

जवाबों:


15

CJam, 47

ri_"/__\_\/_/\/ /\ \__"6/f**eeW%{_S.*s\~,\-<N}/

स्पष्टीकरण:

ri_       read the input, convert to integer and duplicate
"…"       push that string, containing the repeating pattern
           (3 lines in reverse order, concatenated)
6/        split into (3) lines of 6 characters
f*        multiply (repeat) each line n times
*         repeat the array of 3 lines n times
           at this point we have an array of 3*n strings with 6*n characters each
ee        enumerate the array (obtaining an array of [index string] pairs)
W%        reverse the array
           (so the lines are in correct order and indices in reverse order)
{…}/      for each [index string] pair
  _       duplicate the pair
  S.*     vectorized-multiply with " "
           this effectively replaces the index with a string of <index> spaces
  s       convert the pair to string, effectively concatenating the spaces
           with the string
  \       swap with the other copy of the [index string] pair
  ~,      dump the index and string on the stack and get the string length
  \-      subtract the index from it - this is the desired line length
  <       cut the concatenated string to that length
  N       add a newline

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


17

रूबी,, ९

->n{1.upto(n*=3){|i|puts (' '*(n-i)).ljust(n+i,'/__\_\/\ \__/_/\/ '[i%3*6,6])}}

ए। (-4 बाइट्स -1 +1) , 0-अनुक्रमित ( .times) से 1-अनुक्रमित ( 1.upto) में बदल गया

18-स्ट्रिंग स्ट्रिंग के 6-चार विकल्प के चयन के लिए बी (-5 बाइट्स) को तीन 6-चार तार की सरणी से बदल दिया गया।

सी। (-1 बाइट) m=n*3->n*=3

डी। (-5 बाइट्स) ने सभी पांच डबल बैकस्लैश को सिंगल बैकस्लैश तक कम कर दिया (आंशिक रूप से बिंदु A के लिए आवश्यक स्ट्रिंग के पुनर्संरचना द्वारा संभव बनाया गया)

रूबी, 94

->n{(m=n*3).times{|i|puts (' '*(m-i-1)).ljust(m+i+1,[ '/\\ \\__','/_/\\/ ','/__\\_\\'][i%3])}}

व्याख्या

मूल इकाई एक 3x6 हीरा इस प्रकार है (स्पष्टता के लिए डुप्लिकेट किए गए प्रत्येक पंक्ति पर अंतिम वर्ण :)

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

बस हमें इस पैटर्न की उपयुक्त विंडो प्रदर्शित करनी होगी। रूबी ljustआपको किसी भी स्ट्रिंग के साथ पैड करने की अनुमति देता है, न कि केवल रिक्त स्थान। आम तौर ljustपर अंत में रिक्त स्थान जोड़कर मुद्रण योग्य वर्णों की एक स्ट्रिंग को पैड करने के लिए उपयोग किया जाएगा, लेकिन यहां हम इसका उल्टा उपयोग करते हैं: अंत में मुद्रण योग्य वर्ण जोड़कर रिक्त स्थान की एक स्ट्रिंग को पैड करने के लिए।

परीक्षण कार्यक्रम में अपुष्ट

f=->n{
  (m=n*3).times{|i|                  #for each line of the triangle
    puts (' '*(m-i-1)).              #print m-i-1 spaces, 
      ljust(m+i+1,[ '/\\ \\__',      #left justified and padded to total length m+i+1
                   '/_/\\/ ',        #by one of these three strings
                  '/__\\_\\'][i%3])
  }
}

f[gets.to_i]

@ mbomb007 यह पहली बार है जब मुझे यह शिकायत हुई है। एक इंजीनियर के रूप में, मुझे हर चीज पर संशोधन करने की आदत है। यह एक बहुत ही सरल चुनौती है और सुधार काफी तुच्छ हैं, इसलिए मैंने आगे जाकर संशोधन पत्र हटा दिए हैं। मुझे लगता है कि मूल कोड को छोड़ना अच्छा है या कम से कम कोई नुकसान नहीं है, क्योंकि वर्तमान संस्करण की तुलना में इसका पालन करना आसान है।
लेवल रिवर सेंट

3
कोड आकार आमतौर पर विशिष्ट रूप से किसी भी संशोधन की पहचान करता है, लेकिन संपादन इतिहास देखने वाले किसी भी व्यक्ति के लिए संशोधन इतिहास भी उपलब्ध है।
mbomb007

9

रेटिना , 150 122 118 बाइट्स

इस चुनौती का उत्पादन बहुत अच्छा लग रहा है!

इनपुट एकतरफा है। आउटपुट में अनुगामी लाइनफ़ीड शामिल है। कोड ISO 8859-1 एन्कोडिंग का उपयोग करता है। ध्यान देने योग्य रेखा पर अनुगामी स्थान नोट करें।

(?=_\\¶.*1)
_\/__\
(?=/_/\\¶.*1)
/_/\/ 
(^|__)(?=/\\¶.*1)
$1/\ \__
ms}`(.*1*)1
/\¶/_/\¶/__\_\¶$1
m`^(?=(.*¶)*.)
$#1$* 

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

व्याख्या

यदि आप अधिक गहराई से स्पष्टीकरण चाहते हैं, तो टिप्पणी करें या मुझे चैट में संदेश दें।

(?=_\\¶.*1)                     # Matches the start of the 3rd line of every triangle
/__\_\                          #   and prepends another layer if needed
(?=/_/\\¶.*1)                   # 2nd line of each triangle
/_/\/ 
(^|__)(?=/\\¶.*1)               # 1st line of each triangle
$1/\ \__
ms}`(.*1*)1                 # This and above in a multi-single-line loop.
/\¶/_/\¶/__\_\¶$1               #   This stage adds a flattened triangle on top
m`^(?=(.*¶)*.)                  # Prepend a space for every line following -1
$#1$* 

32 बाइट से गोल्फ के लिए मार्टिन को धन्यवाद।


6

टारमो की एससीआई प्रिंटिंग भाषा, 46 बाइट्स। (गैर प्रतिस्पर्धा)

1  /\| /_/\|/__\_\2 \__|/ 0n{n-a-1{~}1a{2#1}$}

बस सीजेएम जैसी अजीब प्रोग्रामिंग भाषाओं को देखकर, यह मुझे थोड़ा चक्कर देता है कि जटिल, अप्राकृतिक और गूढ़ भाषा कैसे हो सकती है, कि मैं "साहसपूर्वक जाना चाहता हूं जहां कोई आदमी पहले नहीं गया है", और अपनी भाषा का आविष्कार करें। परिणामस्वरूप, मैंने आस्की पैटर्न प्रिंटिंग के लिए अपनी भाषा बनाई है।

मूल विचार यह है कि आप पहले पेटेंट और फिर प्रिंटिंग को परिभाषित कर सकते हैं - एक ही तरह के चरित्र '1' या '2' या जो भी संख्या हो - आप अपने खुद के प्रिंट पैटर्न को परिभाषित कर सकते हैं।

एक बार पैटर्न परिभाषित हो जाता है (संख्या के अंत से शुरू होता है) - अगले नंबर पैटर्न प्रिंटिंग को निष्पादित करेंगे।

उदाहरण के लिए

1  /\| /_/\|/__\_\01

इस तरह से आउटपुट:

  /\
 /_/\
/__\_\

पैटर्न 1 को परिभाषित करेगा और फिर इसे तुरंत प्रिंट करेगा। पैटर्न को '' 'के साथ अलग की गई हर चीज से परिभाषित किया जाता है। चरित्र। अंत में 0 - पैटर्न समाप्ति की तरह कार्य करता है।

'$' जैसे विशेष वर्ण लाइन-फीड के रूप में आरक्षित हैं, और '~' विशिष्ट पैटर्न के अंतर - आधे के लिए आरक्षित है।

1  /\| /_/\|/__\_\01$~11$~1~11

इस तरह से टेक्स्ट को आउटपुट देगा:

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

अगला-छोरों के लिए जाता है। कि एक को आसानी से दिखाई देने की आवश्यकता है - इसलिए मैंने लूप के लिए {} कोष्ठक बनाए रखे हैं, लेकिन चर नाम ऑटो हैं - इसलिए पहला ब्रैकेट 'a' वेरिएबल, दूसरा 'b' और इसी तरह का उपयोग करेगा। Iteration हमेशा 0 से विशिष्ट संख्या तक जाएगा - और उस नंबर को {} कोष्ठक से पहले परिभाषित किया गया है।

'n' पूरे फंक्शन इनपुट के लिए आरक्षित चर है।

तो कोड:

1  /\| /_/\|/__\_\0n{1$}

विल आउटपुट (n == 4 के साथ):

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

और '#' ट्रिम लीड व्हाट्सएप के लिए विशेष संशोधक है।

और अंत में संपूर्ण समाधान:

DrawPatterns.cs:

using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using Microsoft.CSharp;

class DrawPatterns
{
//Command line parameters - for example like this: "1  /\| /_/\|/__\_\2 \__|/ 0n{n-a-1{~}1a{2#1}$}" 3
    static Dictionary<char, String[]> patterns = new Dictionary<char,string[]>();

    static string Tabs(int n)
    {
        if( n < 0 ) n = 0;

        String r = "";

        for( int i = 0; i < n ; i++ )
            r += "    ";

        return r;
    }

    static int[] left = new int[10];
    static int top = Console.CursorTop;
    static int lastTop = Console.CursorTop;

    static public void DoPrint(char c, char modifier = ' ')
    {
        if (c == '$')
        {
            for (int i = 0; i < left.Length; i++)
                left[i] = 0;
            top = lastTop + 1;
            return;
        }

        if (!patterns.ContainsKey(c))
            return;

        if (modifier == '½' || modifier == '~')
        {
            int maxSize = patterns[c].Select(x => x.Length).Max();
            for( int i = 0; i < left.Length; i++ )
                left[i] += maxSize / 2;
            return;
        }

        int iLine = 0;
        foreach (var l in patterns[c])
        {
            Console.SetCursorPosition(left[iLine], top + iLine);
            if( top + iLine > lastTop ) 
                lastTop = top + iLine;

            String s = l;
            if (modifier == '#')
                s = s.TrimStart(' ');

            Console.WriteLine(s);
            left[iLine] += s.Length;
            iLine++;
        }
    }

    static void Main(string[] _args)
    {
        List<String> args = _args.ToList();
        String todo = "";
        String code = "";
        char nextVar = 'a';
        String lf = "\r\n";
        int align = 1;
        char lastModifier = ' ';
        int nextArg = 1;
        Dictionary<String, String> argValues = new Dictionary<string,string>();
        bool bDebug = false;

        if (args.Count != 0 && args[0].ToLower() == "-d")
        {
            bDebug = true;
            args.RemoveAt(0);
        }

        if (args.Count == 0)
        {
            Console.WriteLine("Usage: DrawPatterns.cs [options] \"script\" <arguments to script>");
            Console.WriteLine("[options] allowed:");
            Console.WriteLine("-d - debug");
            return;
        }

        String prog = args[0];

        for( int i = 0; i < prog.Length; i++ )
        {
            char c = prog[i];

            // Define pattern.
            if (c >= '0' && c <= '9' && !patterns.ContainsKey(c))
            {
                String p = Regex.Match(prog.Substring(i + 1), "[^0-9]*").Groups[0].Value;
                patterns[c] = p.Split('|');
                i += p.Length;
                if( prog[i + 1] == '0' ) i++;
                continue;
            }

            String procRemain = prog.Substring(i);
            // modifier specified, but pattern number is not provided - use first pattern.
            if( lastModifier != ' ' && ( c < '0' || c > '9' ) )
            {
                code += Tabs(align);
                code += "print('1' , '" + lastModifier + "');" + lf;
                lastModifier = ' ';
            }

            switch ( c )
            {
                case '{':
                    code += Tabs(align);
                    code += "for ( int " + nextVar + " = 0; " + nextVar + " < " + todo + " ; " + nextVar + "++ )" + lf;

                    //  Check for all variable names if they can be used in program.
                    foreach ( var m in Regex.Matches(todo, "[a-zA-Z_][a-zA-Z0-9_]*", RegexOptions.Singleline) )
                    {
                        String varName = m.ToString();

                        if( varName.Length == 1 && varName[0] <= nextVar )
                            // Already declared as a loop.
                            continue;

                        if( argValues.ContainsKey(varName ) )
                            continue;

                        if( nextArg >= args.Count )
                        {
                            Console.WriteLine("Insufficient parameters provided to script - argument '" + varName + "' value is needed");
                            return;
                        }

                        argValues[varName] = args[nextArg];
                        nextArg++;
                    }


                    code += Tabs(align);
                    code += "{" + lf;
                    nextVar++;
                    todo = "";
                    align++;
                    break;

                case '}':
                    align--;
                    code += Tabs(align);
                    code += "}" + lf;
                    break;

                default:
                    if (((c >= '0' && c <= '9') || c == '<' || c == '$') && todo == "")
                    {
                        code += Tabs(align);
                        code += "print('" + c + "' , '" + lastModifier + "');" + lf;
                        lastModifier = ' ';
                        continue;
                    }

                    if (c == '½' || c == '~' || c == '#')
                    {
                        lastModifier = c;
                        continue;
                    }

                    if( c == '\r' || c == '\n' )
                        continue;

                    todo += c;
                    break;
            }

        } //for

        String code2 = "";
        code2 += "using System;" + lf;
        code2 += "public class ExecClass { static void Exec( Action<char, char> print";

        object[] invokeArgs = new object[ argValues.Count+1];
        invokeArgs[0] = new Action<char, char>(DoPrint);
        int iValueIndex = 1;

        foreach ( var kv in argValues )
        {
            code2 += ",";
            code2 += "int " + kv.Key;
            invokeArgs[iValueIndex] = Int32.Parse(kv.Value);
            iValueIndex++;
        }

        code2 += ") {" + lf;
        code2 += code;
        code2 += "} };";

        if( bDebug )
        {
            int line = 1;
            String lineNumberedCode =Regex.Replace(code2, "^(.*)$", 
                delegate(Match m) { return (line++).ToString("d2") + ": " + m.Value; },
                RegexOptions.Multiline
            );
            Console.WriteLine(lineNumberedCode);
            Console.WriteLine();
            Console.WriteLine();
        }

        left[0] = Console.CursorLeft;
        for( int i = 1; i < left.Length; i++ )
            left[i] = left[0];
        top = Console.CursorTop;

        try
        {
            var compileResult = new CSharpCodeProvider().CompileAssemblyFromSource( new CompilerParameters() { GenerateExecutable = false, GenerateInMemory = true }, code2);
            if (compileResult.Errors.HasErrors)
            {
                foreach (CompilerError ce in compileResult.Errors)
                {
                    if (ce.IsWarning) continue;
                    Console.WriteLine("{0}({1},{2}: error {3}: {4}", ce.FileName, ce.Line, ce.Column, ce.ErrorNumber, ce.ErrorText);
                }
                return;
            }

            var method = compileResult.CompiledAssembly.GetType("ExecClass").GetMethod("Exec", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
            method.Invoke(null, invokeArgs);

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        Console.SetCursorPosition(1, lastTop);
        Console.WriteLine();
        Console.WriteLine();
    } //Main
}

इस तरह कमांड लाइन तर्क के साथ: -d "1 / \ / / / \ / | / ___ \ 2 __ | / 0n {na-1 {½} 1a {2 # 1} $}" 3

इसे आउटपुट देंगे:

01: using System;
02: public class ExecClass { static void Exec( Action<char, char> print,int n) {
03:     for ( int a = 0; a < n ; a++ )
04:     {
05:         for ( int b = 0; b < n-a-1 ; b++ )
06:         {
07:             print('1' , '~');
08:         }
09:         print('1' , ' ');
10:         for ( int c = 0; c < a ; c++ )
11:         {
12:             print('2' , ' ');
13:             print('1' , '#');
14:         }
15:         print('$' , ' ');
16:     }
17: } };


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

1
यह वास्तव में बहुत बढ़िया है! आपको गितुब पर हाथ रखना चाहिए और लोगों को इसका उपयोग करने के लिए प्रोत्साहित करना चाहिए!
DJMcMayhem

3
प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है! यह बहुत अच्छा है कि आपने अपनी स्वयं की प्रोग्रामिंग भाषा का आविष्कार किया, लेकिन क्या नवीनतम संस्करण है जिसमें इसे चुनौती से पहले चलाया जा सकता है?
अदनान

आपको पूरी तरह से समझ नहीं आया, आप क्या कह रहे हैं?
TarmoPikaro

ठीक है, अगर भाषा स्वयं चुनौती से नई है, तो इसे गैर-प्रतिस्पर्धा (सुंदर तार्किक अंत) के रूप में चिह्नित करना आम है । यह एक प्रासंगिक पद हो सकता है।
अदनान

भाषा समस्या डोमेन पर निर्भर करती है, और मुझे यहाँ से पढ़ने से पहले ऐसी समस्या का पता नहीं चला। मुझे लगता है कि अगर मैं पहले से ही इसी तरह की समस्या से जूझ रहा हूं तो मैं पहले भी भाषा को कोड कर सकता हूं। :) वैसे भी, इस साइट की कटाई से मुझे समझ में आया है कि सीजेएम यहाँ की "सामान्य" भाषा है। :)
TarmoPikaro

5

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

n=>`,/\\ \\__,/_/\\/ ,/__\\_\\`[r=`repeat`](n).split`,`.map((s,i)=>` `[r](n*3-i)+s[r](n).slice(0,i*2)).slice(1).join`\n`

जहां \nशाब्दिक न्यूलाइन चरित्र का प्रतिनिधित्व करता है। यदि n*3रिक्त स्थान के साथ एक अग्रणी रेखा और एक नई रेखा स्वीकार्य है, तो .slice(1)9 बाइट्स की बचत के लिए हटाया जा सकता है।



2

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

def f(n,m):return f(n-1,m+3)+[' '*(m+x)+(y*n)[x*2:]for x,y in((2,' \\__/\\'),(1,'/ /_/\\'),(0,'/__\\_\\'))]if n else[]
print '\n'.join(f(n,0))

सिद्धांत अन्य उत्तरों के समान है: तीन दोहराया तार लें और फिर उन्हें इस तरह से परत करें कि आपको केवल त्रिकोण प्राप्त करने के लिए उनमें से कुछ को ट्रिम करने की आवश्यकता है, फिर उन्हें बाईं ओर पैड करें।


2

सी ++, 395 बाइट्स

C ++ में 395 बाइट्स के शानदार आकार के साथ पहली बार कोड गोल्फ। मेरे मामले में, यह मोटापे के लिए एक प्रतियोगिता की तरह थोड़ा महसूस करता है: डी

#include <iostream>
#include <cstring>
#define A for (int k=0;k<((s-(i+1))*3+(2-j));k++) cout<<" ";
using namespace std; string t[3]={"/\\","/_/\\","/__\\_\\"};string r[2]={" \\__","/ "};int tr=3;int main(int,char**argv){int s=atoi(argv[1]);for(int i=0;i<s;i++){for(int j=0;j<tr;j++){A for(int l=1;l<=2*(i+1)-1;l++){if((l%2)==0&&(j<2)){cout<<r[j];}else if ((l%2)==1)cout<<t[j];}A cout<<endl;}}}

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