একটি বড় ASCII এক্স আঁকুন


20

সমস্যা

পূর্ববর্তী চ্যালেঞ্জ থেকে অনুপ্রাণিত অনুরূপ কিছু করে

ইতিবাচক পূর্ণসংখ্যার ইনপুট nআউটপুটটিকে এমন আকার দেওয়া হয়েছে যা এই প্যাটার্নটি অনুসরণ করে:

ইনপুট n=1:

* *
 *
* *

ইনপুট n=2:

**  **
 ****
  **
 ****
**  **

ইনপুট n=3:

***   ***
 *** ***
  *****
   ***
  *****
 *** ***
***   ***

এবং তাই ...

এর এই বৈশিষ্ট্যগুলি রয়েছে:

n*2+1 লাইন লম্বা

"বাহুগুলি" nবিস্তৃত হওয়া ছাড়া যখন তারা একত্রিত হয়

কেন্দ্র লাইন nপ্রশস্ত

nএমনকি যদি কেন্দ্রের উপরে এবং নীচে লাইনগুলি n*2প্রশস্ত হয়

যদি nকেন্দ্রের উপরে এবং নীচে লাইনগুলি বিজোড় হয় তবে n*2-1প্রশস্ত

বিধি

  • ট্রেলিং নিউলাইনগুলি গৃহীত
  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য
  • সবচেয়ে কম বাইট জিতেছে
  • আউটপুট মুদ্রণযোগ্য বা স্ট্রিং বা স্ট্রিংগুলির অ্যারে হতে পারে

সম্পাদনাগুলি

  • n=0 হ্যান্ডেল করার দরকার নেই
  • ট্রেলিং স্পেস অনুমোদিত

2
এটা ঠিক আছে আউটপুট হয়েছে থাকে 1পরিবর্তে *এবং 0স্থান পরিবর্তে?
জংহওয়ান মিন

আমাদের নিদর্শনগুলি 0 সূচকযুক্ত হতে পারে?
লিকি নুন

@ জংহওয়ানমিন আমি এটি অনুমতি দেব তবে তারপরে আপনাকে জিততে দেওয়া হচ্ছে না, আপনি যদি সবচেয়ে বেশি উজ্জীবিত হন তবে তা বয়ে যেতে পারে।
লিফডেওয়েন

@LakakyNun 0 সূচী ঠিক আছে
লিফডে ওয়েইন

উত্তর:


9

কাঠকয়লা , 13 12 বাইট

বাইটের জন্য @ এরিকআউটগলফারকে ধন্যবাদ

FN«PX⁺*×*Iθ→

এটি অনলাইন চেষ্টা করুন!

এটি আমার প্রথম কাঠকয়ালের উত্তর, এবং আমি নিশ্চিত যে এটি গল্ফড নয় যেমনটি হতে পারে তবে আমি বুঝতে পেরেছিলাম যে আমি কোথাও শুরু করব।

 FN«            # For input() (i in range(0,input()))
     P           # Print
       X          # In an 'X' shape
        ⁺*×*Iθ   # '*'+'*'*int(first_input)
               →  # Move the cursor right one


@ এরিকথ আউটগল্ফার আমি জানি যে এটি করার একটি উপায় থাকতে হবে! ধন্যবাদ!
nmjcman101

এবং হ্যাঁ এটি বাস্তবে এটি যতটা গল্ফ বলে মনে হচ্ছে।
এরিক আউটগলফার

@ এরিকথ আউটগল্ফার আপনি যেভাবেই আসার আগে এটি ছিল না :)
nmjcman101

1
@ থমাসরুতর চারকোলের নিজস্ব কাস্টম কোড পৃষ্ঠা রয়েছে 256 বাইট সহ , যেখানে এই অক্ষরের প্রত্যেকটিই 1 বাইট। সুতরাং এটি ASCII এ এনকোড করা হয়নি, যেখানে এই চরিত্রগুলির কিছু সত্যই একাধিক বাইট হবে। nmjcman101 +1 বিটিডব্লিউ । গতকালও আমার প্রথম কাঠকয়লা উত্তর চেষ্টা করছিল, কিন্তু কাজ থেকে বাড়ি যাওয়ার আগে আমার যে কয়েক মিনিটের মধ্যে ছিল তা সত্যিই কার্যকর হয়নি। সুতরাং আপনি আমাকে এটি মারধর করেছেন। আমি আপনার উত্তর থেকে কিছু জিনিস শিখেছি, তাই এর জন্য ধন্যবাদ।
কেভিন ক্রুইজসেন

13

এমএটিএল , 16 বাইট

EQXyG:Y+tP+g42*c

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

2উদাহরণ হিসাবে ইনপুট বিবেচনা করুন । নীচের আরও সাম্প্রতিক বিষয়গুলির সাথে স্ট্যাকের সামগ্রীগুলি দেখানো হয়েছে।

EQ    % Implicitly input n. Push 2*n+1
      %   STACK: 5
Xy    % Identity matrix of that size
      %   STACK: [1 0 0 0 0;
                  0 1 0 0 0;
                  0 0 1 0 0;
                  0 0 0 1 0;
                  0 0 0 0 1]
G:    % Push [1 2 ... n]
      %   STACK: [1 0 0 0 0;
                  0 1 0 0 0;
                  0 0 1 0 0;
                  0 0 0 1 0;
                  0 0 0 0 1],
                 [1 2]
Y+    % 2D convolution, extending size
      %   STACK: [1 2 0 0 0 0;
                  0 1 2 0 0 0;
                  0 0 1 2 0 0;
                  0 0 0 1 2 0;
                  0 0 0 0 1 2]
tP+   % Duplicate, flip vertically, add
      %   STACK: [1 2 0 0 2 1;
                  0 1 2 1 2 0;
                  0 0 1 4 0 0;
                  0 1 2 1 2 0;
                  1 2 0 0 1 2]
g     % Convert to logical
      %   STACK: [1 1 0 0 1 1;
                  0 1 1 1 1 0;
                  0 0 1 1 0 0;
                  0 1 1 1 1 0;
                  1 1 0 0 1 1]
42*   % Multiply by 42.
      %   STACK: [42 42  0  0 42 42;
                   0 42 42 42 42  0;
                   0  0 42 42  0  0;
                   0 42 42 42 42  0;
                  42 42  0  0 42 42]
c     % Convert to char. Char 42 is '*'. Char 0 is displayed as space
      %   STACK: ['**  **';
                  ' **** ';
                  '  **  ';
                  ' **** ';
                  '**  **']

তুমি আমার থেকে দ্রুত ...
লিকি নুন

@LakakyNun খুব কমই :-)
লুইস মেন্ডো

আমি আশা করি জেলি 2 ডি সমঝোতা ... আমার প্রতিটি সারিতে 0 টি যুক্ত করতে হবে এবং তারপরে ভেক্টরযুক্ত যোগফল প্রয়োগ করতে হবে ...
লিকি নুন

1
@ লেকিয়ুন আপনি বোঝেন যে তারা
লুইস মেন্ডো

1
@ লুইসমেডো আমার হৃদয়ে আপনি দৃ conv়বিশ্বাস ব্যবহারের জন্য বিজয়ী, এইরকম দুর্দান্ত স্মৃতি ফিরিয়ে আনলেন।
লিফডেওয়েন

9

জেলি , 15 বাইট

Ḥ‘Ḷ⁶ẋ;€”*ẋ$»Ṛ$Y

এটি অনলাইন চেষ্টা করুন!


খুব সুন্দর. আমার 8 বাইট সংক্ষিপ্ত।
লিকি নুন

@ ল্যাকিয়ুনুন সোজা পদ্ধতিটি কিছুটা সাহায্য করে।
এরিক আউটগলফার

খুব সুন্দর পদ্ধতির
জোনাথন অ্যালান

@ জোনাথান অ্যালান হ্যাঁ, বিশেষত tfw আপনি »ভেক্টরাইজ শিখছেন ...
এরিক দ্য আউটগোল্ফার

1
আমি সত্যিই আপনার ব্যবহারকারীর নাম পছন্দ করি! তবে আমি আশা করি আপনি পরিবর্তে "vi" বা "ভিম" ব্যবহার করেছেন, যাতে আপনি "এরিক দি ভি কিং" বেছে নিতে পারেন ... (মন্টি পাইথনের ভক্ত এখানে ...)
অলিভিয়ার দুলাক

4

ভি , 18 17 বাইট

@ ডিজেএমসিএমহেমের ইনপুট ট্রিককে একটি বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে।

Àé*ÄJÀälÀñ2ÙÀl2x>

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

Àé*ÄJÀäl

এই সন্নিবেশ [n]*'*'+[n]*' '+[n]*'*'

        Àñ        ' [arg] times
          2Ù      ' Duplicate the current line down twice
            Àl    ' Move right [arg] times
              2x  ' Delete two characters
                > ' Indent this line one space

লুপের প্রতিটি পুনরাবৃত্তি বাফার থেকে যায়

|**   ***

প্রতি

***   ***
 |** ***
***   ***

এটির অধীনে |কার্সারটি কোথায়*


কি দারুন. আপনি waaay আমাকে outgolfed। সাবাশ! অল্প কিছু টিপ্স: আপনি কাজ করতে পারে Àé*ÄJÀälপরিবর্তে Àá*Àá Àá*, এবং আপনি কি করতে পারেন <M-c>, অর্থাত্ ã(স্মৃতিসম্বন্ধীয়: কেন্দ্র ) লাইন, যা তুলনায় বাইট খাটো মাঝখানে যাওয়ার Àlএটি অনলাইন চেষ্টা করুন!
ডিজেএমসিএমহেম

@ ডিজেএমসিমেহেম আমি আপনার সাথে বিভিন্ন জায়গায় একসাথে কথা বলার চেষ্টা করছি। আমি মনে করি প্রথম পরামর্শটি আমি চুরি করতে যাচ্ছি তবে <M-c>উচ্চ সংখ্যার জন্য বিরতি
nmjcman101

3

05 এ বি 1 ই , 18 বাইট

Å4bS{I·ƒDÂ~„ *èJ,À

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

উদাহরণস্বরূপ n=2

Å4                   # push a list of 4s with length as the input
                     # STACK: [4,4]
  b                  # convert each to binary
                     # STACK: [100, 100]
   S{                # split into digit list and sort
                     # STACK: [0, 0, 0, 0, 1, 1]
     I·ƒ             # input*2+1 times do
        D            # duplicate top of stack
                     # 1st iteration: [0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1]
                     # 2nd iteration: [0, 0, 0, 1, 1, 0], [0, 0, 0, 1, 1, 0]
                     # 3rd iteration: [0, 0, 1, 1, 0, 0], [0, 0, 1, 1, 0, 0]
         Â~          # or each item in the duplicate with its reverse
                     # 1st iteration: [0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 1, 1]
                     # 2nd iteration: [0, 0, 0, 1, 1, 0], [0, 1, 1, 1, 1, 0]
                     # 3rd iteration: [0, 0, 1, 1, 0, 0], [0, 0, 1, 1, 0, 0]
           „ *èJ     # use the resulting binary list to index into the string " *"
                     # 1st iteration: [0, 0, 0, 0, 1, 1], "**  **"
                     # 2nd iteration: [0, 0, 0, 1, 1, 0], " **** "
                     # 3rd iteration: [0, 0, 1, 1, 0, 0], "  **  "
                ,    # print
                 À   # rotate list left

3

ভি , 23 বাইট

Àé*ÄJÀälÀñÙãlxx>ñyHæGVp

এটি অনলাইন চেষ্টা করুন!

Hexdump:

00000000: c0e9 2ac4 4ac0 e46c c0f1 d9e3 6c78 783e  ..*.J..l....lxx>
00000010: f179 48e6 4756 70                        .yH.GVp

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

ব্যাখ্যা:

Àé*ÄJÀäl                " Insert ('*' * n) + (' ' * n) + ('*' * n) 
                        " The obvious way would be 'Àé*ÀÁ ÀÁ*', but this 
                        " non-obvious way saves us a byte
        Àñ      ñ       " 'n' times:
          Ù             "   Duplicate this line (below us)
           ãl           "   Move to the center of this line
             xx         "   Delete two characters
               >        "   And indent this line with one space.

লুপের শেষে ইন্ডেন্টটি করা , আমাদের অন্তর্নিহিত সমাপ্তির সুবিধা নিতে দেয় । এটি সুবিধাজনকভাবে এন + 1 লাইন তৈরি করে , যা 'এক্স' এর ঠিক উপরের অর্ধেক। ধরা যাক ইনপুটটি 4 ছিল Then তারপরে, বাফারটি দেখতে এটির মতো দেখাচ্ছে:

****    ****
 ****  ****
  ********
   ******
    ****

এবং আমরা শেষ লাইনে আছি। তাহলে আমরা:

                yH      " Copy the whole buffer and move to the first line
                  æG    " Reverse every line
                    Vp  " And paste what we just copied *over* the current
                        " line, deleting it in the process

আমি ãxxপ্রথমে জিনিসটিও করেছি, তবে আমার মনে হয় এটি এন n 8 এর জন্য ভেঙে গেছে?
nmjcman101

@ nmjcman101 আহ, আপনি ঠিক বলেছেন। আপনি যদি করেন তবে এটি ঠিক আছে ãl, বা আপনি কেন্দ্রীকরণের আগে ইন্ডেন্ট দিলে তবে এটি আসলে কোনও বাইট সংরক্ষণ করে না। যদিও এটি ছোট সংখ্যার জন্য কাজ করে আমি বুঝতে পারি না।
ডিজেএমসিএমহেম

3

সি #, 139 130 115 বাইট

স্ট্রিং তৈরি করে এবং কল করে -1 বাইট WriteLine, এভাবে নতুন লাইনের জন্য চেক সংরক্ষণ করা হয়।
-6 বাইট কেভিন এবং তার মাস্টার গল্ফিং কৌশলগুলির জন্য ধন্যবাদ!
-2 প্রতিস্থাপন বাইট n*3-nসঙ্গে n*2
-15 বাইট পরে কেভিন দয়া করে আমাকে সঠিক দিকে নির্দেশ করেছেন: আমি কেবল স্ট্রিংটি মুদ্রণের পরিবর্তে ফিরিয়ে দিতে পারি, এভাবে কলটি সংরক্ষণ করা যায় System.Console.WriteLine()। এবং আরও কিছু টিপস ...

n=>{var s="";for(int i,j=0;j<=n*2;j++,s+='\n')for(i=0;i<n*3;)s+=i>=j&i<j+n|i<=n*3-j-1&i++>=n*2-j?'*':' ';return s;}

এটি অনলাইন চেষ্টা করুন!

Ungolfed:

class Program
{
    static void Main(string[] args)
    {
        System.Func<int, string> g = n =>
        {
            var s = "";
            for (int i, j = 0; j <= n*2; j++, s += '\n')
                for (i = 0; i < n*3;)
                    s += i >= j & i < j+n | i <= n*3-j-1 & i++ >= n*2-j ? '*' : ' ';
            return s;
        };

        System.Console.Write(f(1));
        System.Console.Write(f(2));
        System.Console.Write(f(3));
        System.Console.Write(f(5));
        System.Console.Write(f(8));

        System.Console.ReadKey();
    }
}

এটি কেবলমাত্র বড় এক্স প্রিন্ট করার জন্য প্রয়োজনীয় জায়গার সারি এবং কলামগুলির সাথে পুনরাবৃত্তি করে এবং শর্তের উপর নির্ভর করে একটি '*'বা একটি মুদ্রণ করে ' '


1
+1 টি! গল্ফ কিছু ছোট জিনিস। সকল &&হতে পারে &এবং ||হতে পারে |এই ক্ষেত্রে। for(int j=0;হতে পারে for(int j=0,i;এবং তারপরে আপনি অভ্যন্তরের লুপের int সামনের অংশটি সরাতে পারেন i। এছাড়াও, প্রথম পরিবর্তনের পর &এবং |, এছাড়াও আপনি অপসারণ করতে পারেন i++জন্য-লুপ, এবং পরিবর্তন ভিতরে i==n*3-1?...করতে i++==n*3-1?...
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আপনাকে অনেক ধন্যবাদ! আমি অভ্যন্তরীণ লুপটি পরিবর্তন করেছি এবং এখন আমি একটি স্ট্রিং তৈরি করেছি যাতে আমি কল করতে পারি WriteLine, মাত্র 1 বাইট সংরক্ষণ করা। সুতরাং এখন আমি আপনার শেষ পরামর্শটি দিয়ে কী করব তা নিশ্চিত নই।
চার্লি

1
বিটিডব্লিউ, কেন System.Console.WriteLine? স্ট্রিংটি ফিরে আসা: আরও n=>{string s="";for(int i,j=0;j<n*2+1;j++,s+="\n")for(i=0;i<n*3;)s+=i>=j&i<j+n|i<=n*3-j-1&i++>n*2-j-1?'*':' ';return s;}ছোট [ 120 বাইট ] (এবং সবকিছু লুপের ভিতরে রেখে ব্র্যাকেটগুলি থেকে মুক্তিও পেয়েছে works এটি কাজ করে দেখানোর জন্য এখানে একটি টিআইও-লিঙ্ক রয়েছে Also এছাড়াও, এটি যুক্ত করতে নির্দ্বিধায় (বা আপনার নিজের) আপনার উত্তরের টিআইও-লিংক
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন আমি জানতাম না যে টিআইও সি # কোড পরিচালনা করতে পারে! আমি WriteLineকোডটিতে এডটি যুক্ত করেছি কারণ ওপি বড় এক্সটিকে আউটপুট করতে বলেছে , কেবল এটি ফিরিয়ে দেবে না, তাই আমি অনুভব করেছি যে এক্সটির আউটপুটিং ( WriteLineপদ্ধতিটি কল করে ) কোডের অংশ হওয়া উচিত। তবুও, আমি এখনও কোড-গল্ফের নিয়মগুলিতে অভ্যস্ত নই এবং কোড লেখার সময় আমি কী লাইসেন্স নিতে পারি তা আমি জানি না। আমি সবেমাত্র দেখেছি যে এখানে অন্যান্য উত্তরগুলির মধ্যে কিছু কোডে এক্স প্রিন্ট করে, এবং অন্যরা এটি ফুটারে মুদ্রণ করে। এক্ষেত্রে বৈধ পন্থা কী?
চার্লি

1
সাধারণত কোনও স্ট্রিং ফিরিয়ে আনার পাশাপাশি প্রোগ্রামের পরিবর্তে কোনও ফাংশন ব্যবহার করা ডিফল্টরূপে অনুমোদিত হয়, অন্যথায় না বলা হয়। এছাড়াও, প্রশ্নটিতে এটি বলেছে যে " আউটপুট মুদ্রণ হতে পারে বা একটি স্ট্রিং বা স্ট্রিংগুলির অ্যারে ", সুতরাং স্ট্রিং ফিরিয়ে দেওয়া অনুমোদিত। :) ওহ, এবং একটি শেষ জিনিস আপনি গল্ফ করতে পারেন: j<n*2+1হতে পারে j<=n*2। আমি অবশ্যই আপনার জবাব 8 একই বাইট-কাউন্ট দিয়ে আপনার উত্তরটির বন্দর তৈরি করেছি , অবশ্যই আপনার আশ্চর্যজনক উত্তরটি জমা দিয়ে।
কেভিন ক্রুইসসেন

3

হাস্কেল , 88 87 86 বাইট

-1 লাইকনি ধন্যবাদ

(!)=replicate
x n=[zipWith max(reverse m)m|m<-[i!' '++n!'*'++(n*2-i)!' '|i<-[0..n*2]]]

এটি অনলাইন চেষ্টা করুন!


1
zipWith max m(reverse m)সংক্ষিপ্ত করা যেতে পারে zipWith max(reverse m)m। এটি একইরকম zipWith max=<<reverse$mএবং তারপরেও অন্তর্ভুক্ত করা mযেতে পারে: এটি অনলাইনে চেষ্টা করুন!
লাইকনি


2

ম্যাটল্যাব, 153 126 বাইট (17.6% ↓)

ধন্যবাদ @ LuisMendo এর মন্তব্য, ফাংশন disp()একক উদ্ধৃতি চিহ্ন বিনা করতে পারেন আউটপুট অক্ষর, এইভাবে আমি ব্যবহার রোধ করতে পারে fprintfসঙ্গে formatsএবং কয়েক বাইট বাদ। তদ্ব্যতীত, তাঁর মন্তব্য আমাকে মনে করিয়ে দেয় যে আমার (নাল) char(32)পরিবর্তে একটি স্থান উপস্থাপনের জন্য আমার প্রয়োজন char(0)

n=input('')
r=2*n+1
c=3*n
a=0
for i=0:n-1
a=a+[zeros(r,i),diag(1:r),zeros(r,c-r-i)];
end
a((a+flipud(a))>0)=10
disp([a+32 ''])

এটি অনলাইন চেষ্টা করুন!

ম্যাটল্যাব, 153 বাইট

n=input('')
r=2*n+1
c=3*n
a=0
for i=0:n-1 
a=a+[zeros(r,i),diag(1:r),zeros(r,c-r-i)];
end
a((a+flipud(a))>0)=42
fprintf([repmat('%c',1,c),'\n'],char(a)')

ফলাফল উদাহরণ: এন = 10

**********          **********
 **********        ********** 
  **********      **********  
   **********    **********   
    **********  **********    
     ********************     
      ******************      
       ****************       
        **************        
         ************         
          **********          
         ************         
        **************        
       ****************       
      ******************      
     ********************     
    **********  **********    
   **********    **********   
  **********      **********  
 **********        ********** 
**********          **********

2

পাইথন 2 , 93 90 89 83 বাইট

-3 বাইট লেকি নুনকে
ধন্যবাদ -1 বাইট জ্যাকারি টি
-6 বাইট ধন্যবাদ xnor কে ধন্যবাদ

n=input()
x=n*'*'+n*'  '
exec"print`map(max,x,x[::-1])`[2::5];x=' '+x[:-1];"*(n-~n)

[এটি অনলাইনে ব্যবহার করে দেখুন!] [টিআইও-জে ৩ এক্সডব্লিউএসএফ]

স্ট্রিং দিয়ে শুরু করে প্রতিটি পজিশনের জন্য শূন্যস্থান বাছাইয়ের '*** 'জন্য n=3আবেদন map/maxকরে *, তারপরে একটি স্পেস যুক্ত করুন এবং স্ট্রিং থেকে শেষ অক্ষরটি সরিয়ে আবার এগুলি করুন।



আপনি কি n*2*' 'সাথে প্রতিস্থাপন করতে পারবেন না n*' '?
জাকারি

map(maxসরাসরি একটি ছাড়া করা যাবে zip। এছাড়াও, n*2+1হয় n-~n
xnor

1

হাস্কেল , 70 বাইট

f n=[[last$' ':['*'|y<-[1..n],(c-n-y)^2==r^2]|c<-[1..3*n]]|r<-[-n..n]]

এটি অনলাইন চেষ্টা করুন!

স্ট্রিংগুলির একটি তালিকা আউটপুট করে।

সারি r, কলামের প্রতিটি অবস্থানের জন্য , cএটি দুটি তির্যক ব্যান্ডের মধ্যে একটির মধ্যে পড়ে এবং তাই হয় তা নির্ধারণের জন্য একটি সূত্র ব্যবহার করে *


1

জাভা 8, 119 118 বাইট

n->{String r="";for(int i=0,j;i<=n*2;i++,r+="\n")for(j=0;j<n*3;r+=j>=i&j<i+n|j<=n*3-i-1&j++>=n*2-i?"*":" ");return r;}

@ কার্লোস আলেজো এর বিস্ময়কর সি # উত্তর থেকে পোর্ট , আমি তাকে কিছু জিনিস গল্ফ সাহায্য করার পরে। সুতরাং তাকেও উজ্জীবিত করতে ভুলবেন না!

এখানে চেষ্টা করুন।


1

জাভাস্ক্রিপ্ট (ES2017), 155 157 বাইট

n=>[...e=[...Array(n+1)].map((a,i)=>[...d=((b=''.padEnd(n))[c='slice'](i)+'*'.repeat(n)+b[c](0,i))[c](n/2)].reverse().join``+d[c](n%1)),...e.reverse()[c](1)]

স্ট্রিংগুলির একটি অ্যারে প্রদান করে। আমি অ্যারেগুলিতে অপারেশন করি তারপরে এটি মিরর করুন। এটি সম্ভবত অন্যান্য উত্তরের মতো ম্যাট্রিকগুলি দিয়ে অনুকূলিত হতে পারে তবে আমি অনন্য হতে চেয়েছিলাম।

সম্পাদনা করুন: নীলের নির্দেশ অনুসারে, এমনকি এর মানগুলির জন্যও n, কেন্দ্রের লাইনটি nপ্রশস্ত ছিল না , তাই আমি কলামটি টুকরো টুকরো করার সময় একটি / জোড় সনাক্ত করার জন্য একটি মডুলাস যুক্ত করেছি।

n=5
['*****     *****',
 ' *****   ***** ',
 '  ***** *****  ',
 '   *********   ',
 '    *******    ',
 '     *****     ',
 '    *******    ',
 '   *********   ',
 '  ***** *****  ',
 ' *****   ***** ',
 '*****     *****']

Ungolfed

n => {
  e = [...Array(n+1)].map((a, i) => {   // Create and iterate over array with n+1 elements
    b = ''.padEnd(n)                    // String of n spaces
    d = (b.slice(i) + '*'.repeat(n) + b.slice(0, i)).slice(n/2) // Create row string
    return [...d].reverse().join`` + d.slice(1) // Mirror and combine row horizontally
  })
  return [...e,...e.reverse().slice(1)] // Mirror and combine vertically
}

পাদ

n=5
   *****
  ***** 
 *****  
*****   
****    
***     

অনুভূমিকভাবে মিরর করা

n=5
*****     *****
 *****   ***** 
  ***** *****  
   *********   
    *******    
     *****     

উল্লম্বভাবে মিরর করা

n=5
*****     *****
 *****   ***** 
  ***** *****  
   *********   
    *******    
     *****     
    *******    
   *********   
  ***** *****  
 *****   ***** 
*****     *****

এটি এমনকি জন্য ভুল আউটপুট উত্পাদন করে n- কেন্দ্র লাইন nপ্রশস্ত নয় ।
নীল

0

গণিত, 148 বাইট

T=Table;(a=Join[T[T["*",i],{i,(n=#)+2,2n,2}],T[Join[t=T["*",n],T[" ",y],t],{y,1,n,2}]];Column[Row/@Join[Reverse@a,{T["*",n]},a],Alignment->Center])&

0

আর, 102 বাইট

কোড:

n=scan();x=matrix(" ",M<-3*n,N<-2*n+1);for(i in 1:N)x[c(i-1+1:n,M+2-i-1:n),i]="*";cat(x,sep="",fill=M)

টেস্ট:

> n=scan();x=matrix(" ",M<-3*n,N<-2*n+1);for(i in 1:N)x[c(i-1+1:n,M+2-i-1:n),i]="*";cat(x,sep="",fill=M)
1: 10
2: 
Read 1 item
**********          **********
 **********        ********** 
  **********      **********  
   **********    **********   
    **********  **********    
     ********************     
      ******************      
       ****************       
        **************        
         ************         
          **********          
         ************         
        **************        
       ****************       
      ******************      
     ********************     
    **********  **********    
   **********    **********   
  **********      **********  
 **********        ********** 
**********          **********

0

সিজেম, 24 বাইট

{:T2*){S*T'**+}%_W%..e>}

এটি এমন একটি ব্লক যা স্ট্যাক থেকে একটি সংখ্যা নেয় এবং স্ট্যাকের জন্য লাইনগুলির একটি তালিকা আউটপুট করে।

ব্যাখ্যা:

{                        e# Stack:           | 2
 :T                      e# Store in T:      | 2, T=2
   2*                    e# Multiply by 2:   | 4
     )                   e# Increment:       | 5
      {                  e# Map over range:  | [0
       S                 e#   Push space:    | [0 " "
        *                e#   Repeat string: | [""
         T               e#   Push T:        | ["" 2
          '*             e#   Push char '*': | ["" 2 '*
            *            e#   Repeat char:   | ["" "**"
             +           e#   Concatenate:   | ["**"
              }%         e# End:             | ["**" " **" "  **" "   **" "    **"]
                _        e# Duplicate:       | ["**" " **" "  **" "   **" "    **"] ["**" " **" "  **" "   **" "    **"]
                 W%      e# Reverse:         | ["**" " **" "  **" "   **" "    **"] ["    **" "   **" "  **" " **" "**"]
                   ..e>  e# Overlay:         | ["**  **" " ****" "  **" " ****" "**  **"]
                       } e# End

0

পাইথন 2 , 110 বাইট

x=a=0
n=c=input()
while x<2*n+1:
    print ' '*a+'*'*n+' '*c+'*'*(2*n-2*a-c)
    x+=1
    a=n-abs(n-x)
    c=max(0, n-2*a)

এই প্রোগ্রামটি প্রতিটি লাইনকে 4 টি ভাগে ভাগ করে, প্রথম স্পেস, প্রথম তারা, দ্বিতীয় স্থান এবং পরে দ্বিতীয় তারা। এক্সের প্রতিটি অনুভূমিক রেখার জন্য এটি গণনা করে যে রেখার 4 টি বিভাগের প্রতিটিটির জন্য কতগুলি তারা বা স্পেস প্রয়োজন, তারপরে সেই স্ট্রিংটি তৈরি করে এবং মুদ্রণ করে।


0

রেটিনা , 144 বাইট

.+
 $&$* $&$* $&
 
$`#$'¶
¶\d+$

( *)#( *)(\d+)
$1$3$**$2#$3$* #$2$3$**$1
( +)(\*+)( *)(# +#)\3\2\3 +
$3$2$1$4$1$2$3
+` (# +#)
$1 
+` #...
#
##

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা:

.+
 $&$* $&$* $&

ইনপুট মান (প্রতিটি আউটপুট লাইনের জন্য একটি) এর আগে 2n + 1 স্পেস যুক্ত করুন।

$`#$'¶

একটি দিয়ে প্রতিটি স্থান প্রতিস্থাপন #এবং ফলাফল সংগ্রহ করুন। এটি #উভয় পক্ষের স্পেস প্যাডযুক্ত এস এর একটি তির্যক রেখা দেয় , যার সাথে ইনপুট মান প্রত্যয়িত হয়।

¶\d+$

আসল ইনপুট মানটি মুছুন, কারণ এখন আমাদের প্রতিটি লাইনে একটি অনুলিপি রয়েছে।

( *)#( *)(\d+)
$1$3$**$2#$3$* #$2$3$**$1

এন *এর দুটি তির্যক রেখা তৈরি করুন , nস্পেসের একটি বিভাজক কলামের সাথে একটি জোড় জড়ানো #

( +)(\*+)( *)(# +#)\3\2\3 +
$3$2$1$4$1$2$3

যে লাইনে *গুলি মাঝের কাছাকাছি রয়েছে সেখানে দুটি অংশকে চারদিকে বদলে ফেলুন। এটি অনুরূপ একটি চেহারা দেয় > | | <

+` (# +#)
$1 

| |এক ধরণের >> > <উপস্থিতি দিয়ে s যতদূর যেতে হবে বাম দিকে সরান ।

+` #...
#

#S এর মধ্যে প্রতিটি জায়গার জন্য , নিম্নলিখিত তিনটি অক্ষর মুছুন। এটি > <একটি মধ্যে যোগদান X

##

এখনই অপ্রয়োজনীয় #গুলি মুছুন ।

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