কোনও ত্রিভুজ ছাড়াই একটি ত্রিভুজ তৈরি করুন


44

ছোট্ট বাচ্চা হিসাবে, আমি এই খেলনাগুলির সাথে প্রচুর খেলতে পছন্দ করি:

এখানে চিত্র বর্ণনা লিখুন

তারা সম্ভবত এইগুলি শিল্পের জন্য ব্যবহার করার ইচ্ছা করেছিল তবে আমি তাদের সবসময় গণিতের জন্য ব্যবহার করি! ফ্র্যাকটালস, নিদর্শনগুলি ইত্যাদি একবার, আমাকে এই চ্যালেঞ্জ দেওয়া হয়েছিল:

কোনও সবুজ ত্রিভুজ টাইল ব্যবহার না করে একটি ত্রিভুজ তৈরি করুন।

এই চ্যালেঞ্জটি আমাকে দীর্ঘকাল ধরে আটকে রেখেছে, যতক্ষণ না আমি সত্যিই খুব সুন্দর 3 টি ট্র্যাপিজয়েড দিয়ে এটি করার সহজ উপায় এবং সহজ উপায়কে ঠাপিয়েছি:

  /\  
 /_/\ 
/__\_\

এখন, এই ত্রিভুজটি নিন এবং এটিকে ঘোরান:

______         
\ \__/         
 \/ /          
  \/ 

এই দুটি ত্রিভুজ ব্যবহার করে আমরা এর মধ্যে আরও বৃহত্তর ত্রিভুজ তৈরি করতে পারি। উচ্চতা 2 এর ত্রিভুজ এখানে:

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

এবং এখানে 3-7 উচ্চতার ত্রিভুজ রয়েছে:

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

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

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

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

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

চ্যালেঞ্জ

একটি প্রোগ্রাম বা ফাংশন যা নেয় লিখুন এন এবং উচ্চতার একটি ত্রিভুজ-কম ত্রিভুজ ছাপে এন । প্রতিটি লাইনে ফাঁকা স্থানগুলি গ্রহণযোগ্য, এবং এক পর্যন্ত অবধি অনুসরণযোগ্য বা শীর্ষস্থানীয় নতুন লাইন গ্রহণযোগ্য। আইও যে কোনও যুক্তিসঙ্গত বিন্যাসে থাকতে পারে। ইনপুটটি ইতিবাচক পূর্ণসংখ্যা হিসাবে গ্যারান্টেড হয়, সুতরাং আপনাকে নেতিবাচক সংখ্যা, দশমিক, অ-সংখ্যা ইত্যাদি নিয়ে চিন্তা করতে হবে না etc.

বাইট জিতে স্বল্পতম উত্তর!


ট্র্যাপিজয়েডগুলির বাইরে আরও ট্র্যাপিজয়েড তৈরি করার চেষ্টা করুন। দৈর্ঘ্য 2 এবং 3 অবশ্যই স্পষ্টভাবে সম্ভব (এবং এক্সটেনশনের মাধ্যমে, ফর্মের সমস্ত সংখ্যা 2 3 a * 3) বি) (আমি কীভাবে জানি? আমি যখন ছোট ছিলাম তখন একই ধরণের ব্লক নিয়ে খেলেছি))
ক্যালকুলেটরফ্লাইন

1
@ ক্যাটস অ্যারেফ্লুফাই ওয়েল, যেহেতু আপনি ট্র্যাজেজয়েডগুলি ত্রিভুজগুলির বাইরে তৈরি করতে পারেন, আপনি এই সিদ্ধান্তে পৌঁছাতে পারেন যে আপনি ট্র্যাপিজয়েডগুলি ট্র্যাপিজয়েডগুলি তৈরি করতে পারেন। প্রকৃতপক্ষে, আপনি যদি উচ্চতা 3 এবং 7 এর ত্রিভুজগুলি লক্ষ্য করেন তবে আপনি একই ট্র্যাজিজয়েডগুলির সাথে পুনরাবৃত্তি একই প্যাটার্নটি দেখতে পাবেন।
ডিজেএমসিএমহেম

এই চ্যালেঞ্জ সত্যিই দুর্দান্ত। রেটিনায় এটি কীভাবে করবেন তা অনুধাবন করতে পেরে আমি উপভোগ করেছি।
mbomb007

@ mbomb007 আপনি এটি উপভোগ শুনে খুশি! = D ঠিক এই কারণেই আমি চ্যালেঞ্জগুলি লিখি।
ডিজেএমসিএমহেম

2
এই চ্যালেঞ্জটি মোবাইল অ্যাপ্লিকেশনটির সাথে স্ক্রিনে পুরোপুরি ফিট করে। এটা কি ইচ্ছাকৃত ছিল? :)
ডডি

উত্তর:


15

সিজেম, 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

রুবি, 79

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

উ। (-4 বাইট, -1 +1) 0-সূচী ( .times) থেকে 1-সূচী ( 1.upto)

বি (-5 বাইট) তিনটি 6-চর স্ট্রিংয়ের অ্যারে থেকে 18-চর স্ট্রিংয়ের 6-চর স্ট্রিংয়ের নির্বাচনের পরিবর্তিত হয়েছে।

সি (-1 বাইট) m=n*3->n*=3

ডি (-5 বাইট) পাঁচটি ডাবল ব্যাকস্ল্যাশকে একক ব্যাকস্ল্যাশ-এ হ্রাস করেছে (পয়েন্ট এ এর ​​জন্য প্রয়োজনীয় স্ট্রিংকে পুনরায় অর্ডার করে আংশিকভাবে সম্ভব হয়েছে)

রুবি, 94

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

ব্যাখ্যা

বেসিক ইউনিটটি নিম্নরূপে একটি 3x6 হীরক (প্রতিটি সারির শেষ অক্ষর স্পষ্টতার জন্য নকল করা হয়েছে :)

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

আমাদের যা করতে হবে তা হ'ল এই প্যাটার্নের উপযুক্ত উইন্ডো প্রদর্শন করা। রুবি ljustআপনাকে কেবল ফাঁকা স্থান নয়, কোনও স্ট্রিং দিয়ে প্যাড করতে দেয়। সাধারণত ljustপ্রান্তে ফাঁকা যোগ করে মুদ্রণযোগ্য অক্ষরের একটি স্ট্রিং প্যাড করতে ব্যবহৃত হত, তবে এখানে আমরা এটি বিপরীতে ব্যবহার করি: শেষে প্রিন্টেবল অক্ষর যুক্ত করে স্পেসের একটি স্ট্রিং প্যাড করতে।

পরীক্ষা প্রোগ্রামে ungolfed

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 এই প্রথম আমার অভিযোগ এসেছে। একজন প্রকৌশলী হিসাবে, আমি সব কিছুর উপর সংশোধন করাতে অভ্যস্ত এটি একটি মোটামুটি সহজ চ্যালেঞ্জ এবং উন্নতিগুলি বেশ নগণ্য, সুতরাং আমি এগিয়ে গিয়ে সংশোধন পত্রগুলি মুছে ফেলেছি I আমি মনে করি মূল কোডটি ছেড়ে দেওয়া ভাল বা কমপক্ষে কোনও ক্ষতি করে না, কারণ এটি বর্তমান সংস্করণের চেয়ে অনুসরণ করা সহজ।
স্তর নদী সেন্ট

3
কোড আকারটি স্বতন্ত্রভাবে কোনও সংশোধন সনাক্ত করে, তবে সম্পাদনা ইতিহাস দেখার জন্য যে কেউ পুনর্বিবেচনা ইতিহাস উপলব্ধ।
mbomb007

9

রেটিনা , 150 122 118 বাইট

এই চ্যালেঞ্জের আউটপুটটি দুর্দান্ত, দুর্দান্ত দেখায়!

ইনপুট আনারিতে আছে। আউটপুটে একটি পিছনের লাইনফিড রয়েছে। কোডটি আইএসও 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}$}

কেবল সিজেমের মতো অদ্ভুত প্রোগ্রামিং ভাষাগুলির দিকে তাকিয়ে এটি আমাকে কিছুটা জটিল করে তোলে, অপ্রাকৃত এবং ক্রিপ্টিক ভাষা কী হতে পারে, আমি "সাহস করে সেখানে যেতে চেয়েছিলাম যেখানে কোনও মানুষ আগে যায়নি" এবং নিজের ভাষা আবিষ্কার করতে চেয়েছিল। ফলস্বরূপ আমি ascii নিদর্শন মুদ্রণের জন্য আমার নিজস্ব ভাষা তৈরি করেছি।

প্রাথমিক ধারণাটি হ'ল আপনি প্রথমে প্যাটেন এবং তারপরে মুদ্রণ - একই ধরণের অক্ষর '1' বা '2' বা যে কোনও সংখ্যার ব্যবহার করে সংজ্ঞায়িত করতে পারেন - আপনি নিজের মুদ্রণ প্যাটার্নটি সংজ্ঞায়িত করতে পারেন।

একবার প্যাটার্ন সংজ্ঞায়িত হয়ে গেলে (সংখ্যা থেকে শেষ অবধি শুরু হয়) - পরবর্তী সংখ্যাগুলি প্যাটার্ন প্রিন্টিং কার্যকর করবে।

উদাহরণ স্বরূপ

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

এর মতো ফলাফল:

  /\
 /_/\
/__\_\

প্যাটার্ন 1 সংজ্ঞায়িত করবে এবং এরপরে এটি মুদ্রণ করবে। প্যাটার্নটি '|' দিয়ে আলাদা করে সমস্ত কিছু সংজ্ঞায়িত করা হয় অক্ষর। 0 শেষে - প্যাটার্ন সমাপ্তির মতো কাজ করে।

'$' এর মতো বিশেষ অক্ষরগুলি লাইন-ফিড হিসাবে সংরক্ষিত থাকে এবং '~' নির্দিষ্ট প্যাটার্নের ব্যবধান - অর্ধেকের জন্য সংরক্ষিত থাকে।

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

এই পাঠ্য আউটপুট দেয়:

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

এরপরে লুপগুলি যায়। এটির জন্য সহজেই দৃশ্যমান হওয়া দরকার - সুতরাং আমি for-loops এর জন্য} rac বন্ধনীগুলি ধরে রেখেছি, তবে ভেরিয়েবলের নামগুলি স্বয়ংক্রিয় নামযুক্ত - সুতরাং প্রথম বন্ধনীটি 'a' ভেরিয়েবল, দ্বিতীয় 'বি' এবং আরও কিছু ব্যবহার করবে। Iteration সর্বদা 0 থেকে নির্দিষ্ট সংখ্যায় চলে যাবে - এবং that rac বন্ধনীগুলির আগে এই সংখ্যাটি সংজ্ঞায়িত করা হয়।

'এন' পুরো ফাংশন ইনপুট জন্য সংরক্ষিত পরিবর্তনশীল।

সুতরাং কোড:

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

আউটপুটস (এন == 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 {না-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
সত্যিই দুর্দান্ত! আপনার এটি গিথুবের উপরে রাখা উচিত এবং লোকেরা এটি ব্যবহার করতে উত্সাহিত করবেন!
ডিজেএমসিএমহেম

3
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! এটি খুব সুন্দর যে আপনি নিজের প্রোগ্রামিং ভাষা আবিষ্কার করেছেন, তবে এটি যে সর্বশেষতম সংস্করণে চালিত হতে পারে তা কি চ্যালেঞ্জের আগে থেকেই যায়?
আদনান

আপনাকে পুরোপুরি বুঝতে পারিনি, কী বলছেন?
তারমোপিকারো

ওয়েল, যদি নিজেই ভাষা চ্যালেঞ্জ চেয়ে নতুন, এটা হিসাবে চিহ্নিত করতে সাধারণ অ প্রতিদ্বন্দ্বী (প্রশংসনীয় যৌক্তিক অধিকার;))। এটি কোনও প্রাসঙ্গিক পোস্ট হতে পারে।
আদনান

ভাষা সমস্যা ডোমেনের উপর নির্ভর করে এবং এখান থেকে এটি পড়ার আগে আমি জানতাম না যে এ জাতীয় সমস্যাটির অস্তিত্ব রয়েছে। আমি অনুমান করতে পারি যদি আমি ইতিমধ্যে একই ধরণের সমস্যাটি আঘাত করেছি তবে আমি ভাষাটি কোড করতে পারতাম। :) যাইহোক, এই সাইটটি সংগ্রহ করে আমি বুঝতে পেরেছি যে সিজেম এখানে "বেশ" সাধারণ "ভাষা"। :)
তারমোপিকারো

5

জাভাস্ক্রিপ্ট (ES6), 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 বাইট

সি ++ তে 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;}}}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.