আপনি আমাকে একটি ষড়ভুজ করতে পারেন দয়া করে?


53

আজ, আমরা একটি ASCII ষড়ভুজ তৈরি করতে যাচ্ছি। আপনাকে অবশ্যই এমন একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা ইতিবাচক পূর্ণসংখ্য n গ্রহণ করে এবং নক্ষত্রের দ্বারা তৈরি এন মাপের একটি হেক্সাগন গ্রিড আউটপুট করে । উদাহরণস্বরূপ, আকার 2 এর একটি ষড়্ভুজটি দেখতে দেখতে:

 * *
* * *
 * *

3 মাপের ষড়্ভুজটি দেখতে দেখতে:

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

আপনি কোনও ডিফল্ট ইনপুট এবং আউটপুট পদ্ধতি ব্যবহার করতে পারেন , উদাহরণস্বরূপ STDIO / STDOUT, ফাংশন আর্গুমেন্ট এবং রিটার্ন মানগুলি বা ফাইল পড়া / লেখার জন্য।

আপনি ধরে নিতে পারেন যে ইনপুটটি সর্বদা বৈধ, সুতরাং যদি এটি ইতিবাচক পূর্ণসংখ্যার না হয় তবে আপনার প্রোগ্রামটি যা খুশি তা করতে পারে। আপনি কি তবে একটি আকার 1 ষড়ভূজ, যা একটি একক তারকাচিহ্ন হতে হবে বিশেষ মামলায় হ্যান্ডেল করতে হবে:

*

আউটপুট দৃশ্যত একইরকম হওয়াতে নেতৃস্থানীয় এবং অনুসরণের সাদা স্থানটিকে অনুমোদিত।

উদাহরণ:

1:
*

2:
 * *
* * *
 * *

3:
  * * *
 * * * *
* * * * *
 * * * *
  * * *

4:
   * * * *
  * * * * *
 * * * * * *
* * * * * * *
 * * * * * *
  * * * * *
   * * * *

5:
    * * * * *
   * * * * * *
  * * * * * * *
 * * * * * * * *
* * * * * * * * *
 * * * * * * * *
  * * * * * * *
   * * * * * *
    * * * * *

6:
     * * * * * *
    * * * * * * *
   * * * * * * * *
  * * * * * * * * *
 * * * * * * * * * *
* * * * * * * * * * *
 * * * * * * * * * *
  * * * * * * * * *
   * * * * * * * *
    * * * * * * *
     * * * * * *

12:
           * * * * * * * * * * * *
          * * * * * * * * * * * * *
         * * * * * * * * * * * * * *
        * * * * * * * * * * * * * * *
       * * * * * * * * * * * * * * * *
      * * * * * * * * * * * * * * * * *
     * * * * * * * * * * * * * * * * * *
    * * * * * * * * * * * * * * * * * * *
   * * * * * * * * * * * * * * * * * * * *
  * * * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * * * * *
  * * * * * * * * * * * * * * * * * * * * *
   * * * * * * * * * * * * * * * * * * * *
    * * * * * * * * * * * * * * * * * * *
     * * * * * * * * * * * * * * * * * *
      * * * * * * * * * * * * * * * * *
       * * * * * * * * * * * * * * * *
        * * * * * * * * * * * * * * *
         * * * * * * * * * * * * * *
          * * * * * * * * * * * * *
           * * * * * * * * * * * *

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

সেরা গল্ফার জয় হোক!


15
আমাদের কেন একটি ষড়ভুজ-গ্রিড ট্যাগ আছে?
পাভেল

13
এছাড়াও, কারও কাছে একটি ষড়ভুজযুক্ত সমাধান লিখতে হবে।
পাভেল

যদি কেউ অনুগ্রহের জন্য যেতে চান, আপনি সম্ভবত আমার হেক্সাগনির উত্তরটির আউটপুট লুপটি এখানে পুনরায় ব্যবহার করতে পারেন ।
মার্টিন এন্ডার

6
"দয়া করে আমাকে কি ষড়ভুজ বানাতে পারবেন?" - অবশ্যই, আপনি এখানে যান: i.imgur.com/1emYIia.png
অদিতসু

@ পাভেল কারণ ষড়ভুজ গ্রিডে প্রচুর অপারেশন আরও বেশি স্ট্যান্ডার্ড বর্গক্ষেত্র গ্রিড থেকে পৃথক এবং বিভিন্ন সমস্যার সমাধানের মধ্যে বহনযোগ্য। সমন্বিত হেরফের, ঘূর্ণন, আউটপুট লেআউট ইত্যাদির মতো ক্রিয়াকলাপগুলি
স্পার

উত্তর:


37

হেক্সাগনি + ব্যাশ কোরিটিলস, 0 + 3 + 8 = 11 বাইট

-gপতাকাটির জন্য +3 এবং মানহীন |tr . \*আমন্ত্রণের জন্য +8 অন্তর্ভুক্ত (এই মেটা পোস্টটি দেখুন )


হেক্সাগনির পক্ষে যুক্তি হিসাবে ইনপুট দেওয়া হয়। যখন হেক্সাগনি দোভাষীকে -g Nবিকল্পের সাথে ডাকা হয় এটি একটি ষড়ভুজ মুদ্রণ করে .। তারপরে আমরা তাদের সাথে এসগুলি প্রতিস্থাপন করতে ট্র ব্যবহার করি *


2
বাহ, প্রতিভা। এবং আপনি সমস্ত গল্ফিং ভাষা মারছেন!
DJMcMayhem

6
হেক্সাগোনি ভাষা ব্যবহার করে সত্যই আমি এটি কল করব না, যেমন হেক্সাগনি ইন্টারপ্রেটারের সাথে কমান্ডগুলির মধ্যে একটি হিসাবে ব্যাশ (বা অন্য কোনও শেল) ব্যবহার করার মতো। উদাহরণস্বরূপ hexagony -g $1|tr . \*, হেক্সাগনি দোভাষীকে এইভাবে নামকরণ করে ধরে নেওয়া উচিত।
পাওলো ইবারম্যান

3
এটি একটি আসল,
চলমান

1
@ jpmc26 দৈর্ঘ্য 5 হেক্সের জন্য আপনি দৌড়াবেনruby ./interpreter.rb -g 5|tr . \*
রিলে

3
@ অলিভিয়ারডুলাক "প্রোগ্রাম" শূন্য বাইট। সমস্ত কাজ "পতাকা" দ্বারা করা হচ্ছে।
রিলে

20

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

i=n=input()
while~-n+i:i-=1;j=abs(i);print' '*j+'* '*(2*n+~j)

প্রতিটি লাইনের শেষে একটি পিছনে স্থান মুদ্রণ করে।

বাইট সংরক্ষণের জন্য এরিক আউটগলফারকে ধন্যবাদ।


এখান থেকে শুরু করে আপনি পিইপি 8 নন তবে বৈধ পাইথন 3 কোডটি 69 বাইটের int(input())পরিবর্তে input()এবং যথারীতি print(' '*j+'* '*(2*n+~j))প্রতিস্থাপনের মাধ্যমে print' '*j+'* '*(2*n+~j)- শীতল কোড বিটিডাব্লু ;-)
ডিলিট্যান্ট

এটি কিছু মারাত্মক শীতল কোড!
মাটিয়াস বজরল্যান্ড

13

জাভাস্ক্রিপ্ট (ES6), 77 81 84

@ আপভোটার্স: @ETH প্রোডাকশন দ্বারা উত্তরটি মিস করবেন না, এটি 76 76 বাইট

সম্পাদনা করুন বৈশিষ্ট পরিবর্তন পরে সংশোধিত, স্থান trailing অনুমতি

শুধু টুপি জন্য ... আরে! টুপি নেই?

f=(n,b='* '.repeat(n+n-1),o=b)=>--n?f(n,b=` ${b}`.slice(0,-2),b+`
${o}
`+b):o

পরীক্ষা

f=(n,b='* '.repeat(n+n-1),o=b)=>--n?f(n,b=` ${b}`.slice(0,-2),b+`
${o}
`+b):o


function update()
{
  O.textContent=f(+I.value)
}

update()
<input id=I type=number min=1 value=3 oninput='update()'>
<pre id=O></pre>


11

হেক্সাগনি , 91 87 86 বাইট

?{2'*=&~}=&}='P0</0P}|@..;>;'.\};0Q/..\&(<>"-_"&}=\?_&\/8.=-\<><;{M/.(.(/.-{><.{&'/_.\

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

অবশেষে এটি করেছে।

প্রথমদিকে (ব্যয়বহুল লুপগুলি উপলব্ধি করার আগে) আমি আশা করি এটি পার্শ্ব দৈর্ঘ্য 5 এ ফিট করতে সক্ষম হতে পারে তবে এখন এটি পাশের দৈর্ঘ্যের 6 এর সাথে ফিট করা যথেষ্ট শক্ত।

এটি পেতে আমাকে আসলে রৈখিক কোডটি একটু পরিবর্তন করতে হবে। প্রকৃতপক্ষে, এটি লেখার ফলে আমি 1 2 বাইট দ্বারা রৈখিক কোডটি গল্ফ করার একটি উপায় উপলব্ধি করতে পারি ।


10

জাভাস্ক্রিপ্ট (ES6), 77 76 বাইট

g=(n,s=`
*`+' *'.repeat(n*2-2),c=s,q=c.replace('*',''))=>--n?g(n,q+s+q,q):s

আমি নিজেকে বলেছিলাম যে আমি অন্য উত্তরগুলির দিকে না তাকিয়ে নতুন ইসি 6 রেকর্ড তৈরি না করা পর্যন্ত ঘুমাব না, সুতরাং এখানে ...

পরীক্ষার স্নিপেট

g=(n,s=`
*`+' *'.repeat(n*2-2),c=s,q=c.replace('*',''))=>--n?g(n,q+s+q,q):s

for(var i = 1; i < 7; i++) console.log(g(i)) // joe


10

সি, 91 89 80 74 বাইট

w,y;f(s){for(y=-s;++y<s;)for(w=printf("\n%*s",y,"");++w<s*printf(" *"););}

সঠিক সূত্রগুলি পেতে আমি প্রায় বেশিরভাগ টুইট করেছি, তারপরে এটি সমস্ত একসাথে ছড়িয়ে দিয়েছি।

Nf নাম্বার সহ কল করুন এবং এটি ষড়ভুজটি প্রসারিত করবে print

অসম্পূর্ণ এবং ব্যাখ্যা করা হয়েছে (৮০-বাইট সংস্করণ):

w,y;
f(s) {
    // y iterates over [-s + 1 ; s - 1] (the number of rows)
    for(y = -s; ++y < s;)
        // w iterates over [abs(y) + 2 ; s * 2 - 1] (the number of stars on the row)
        for(
            // This prints a backspace character (ASCII 8)
            // padded with abs(y) + 2 spaces, effectively
            // printing abs(y) spaces to offset the row.
            // Also initializes w with abs(y) + 2.
            printf("\n%*c", w = abs(y) + 2, 8);

            // This is the for's condition. Makes use
            // of the 2 returned by printf, since we coïncidentally
            // need to double the upper bound for w.
            w++ < s * printf("* ");

            // Empty for increment
        )
            ; // Empty for body
}

কলিরুতে এটি সরাসরি দেখুন

নোট:

  • printfনেতিবাচক প্যাডিং পরিচালনা করতে পারে, যার ফলস্বরূপ ডানদিকে প্যাডিং সহ একটি বাম-সংযুক্তিযুক্ত চরিত্র in সুতরাং আমি এর প্রভাবটির জন্য কিছু চেষ্টা করেছি w = printf("%*c*", y, ' ')যাতে এটি পরম মানটির যত্ন নিতে পারে এবং আমি এর ফেরত মূল্য থেকে এটি পুনরুদ্ধার করতে পারি। দুর্ভাগ্যক্রমে, শূন্য এবং একটি প্যাডিং উভয় প্রস্থই চরিত্রটি নিজস্বভাবে মুদ্রণ করে, তাই তিনটি কেন্দ্রের লাইনটি অভিন্ন ছিল।
    আপডেট: জ্যাসেন কোনও চরিত্রের পরিবর্তে খালি স্ট্রিংটি মুদ্রণ করে ঠিক এটি করার একটি উপায় খুঁজে পেয়েছে - 6 বাইট শেভড!

  • ব্যাকস্পেস অক্ষরটি ভুলভাবে কলিরু দ্বারা পরিচালিত হয় - একটি স্থানীয় টার্মিনালে এই কোডটি কার্যকর করা প্রতিটি লাইনের নেতৃস্থানীয় স্থান সরিয়ে দেয়।


w=printf("\n%*s",abs(y),"");++w<s*printf(" *");
জেসেন

@ জেসেন আমি বিশ্বাস করতে পারি না যে আমি মিস করেছি ... ধন্যবাদ!
কোয়ান্টিন

9

05 এ বি 1 ই , 14 13 বাইট

কোড:

F¹N+„ *×})û.c

ব্যাখ্যা:

F       }        # Input times do (N = iteration number)
 ¹N+             #   Calculate input + N
    „ *×         #   Multiply by the string " *"
         )       # Wrap everything into an array
          û      # Palindromize the array
           .c    # Centralize

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


1
"কেন্দ্রীভূত" অংশটি কী করে তা আমি বুঝতে পারি না। যখন আমি এটি সরিয়ে ফেলি, তখন আমি শীর্ষস্থানীয় জায়গাগুলির যথাযথ সংখ্যা ছাড়াই স্ট্রির একটি অ্যারে পাই।
ডিজেএমসিএমহেম

1
@ ডিজেএমসিমেহেম একটি অ্যারেতে, আপনি এটি দেখতে পাচ্ছেন যে এটি পাঠ্য কেন্দ্রের সাথে সংলগ্নভাবে নিউলাইনগুলিতে যুক্ত হয়েছে string এটি ইনপুটটিতে এটি করে।
আদনান

8

জেলি , 24 বাইট

R+’µạṀx@€⁶żx@K¥€”*$F€ŒḄY

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

জেলি লজ্জা পেয়েছে যে এটির কেন্দ্রীকরণের পরমাণু নেই, তাই এটি পিএবিএইই এবং ভি দ্বারা যথাক্রমে 11 এবং 7 বাইট দ্বারা প্রহার করা হয়েছে!

আপনি যদি গল্ফ করার কোনও উপায় খুঁজে পান তবে দয়া করে মন্তব্য করুন। কোন সাহায্য প্রশংসা করা হয়।

ব্যাখ্যা :

R+’µạṀx@€⁶żx@K¥€”*$F€ŒḄY Main link. Arguments: z.
R+’                      The sizes of the hexagon's rows. (implicit argument)
   µ                     Start a new monadic chain with the above argument.
    ȧṀx@€⁶               The spaces you must prepend to each row. (implicit argument)
           x@K¥€”*$      The stars (points) of each row, space-joined, as a single link. (implicit argument)
          ż        F€    Conjoin and merge the leading spaces with the stars appropriately.
                     ŒḄ  Create the second half of the hexagon without the middle row.
                       Y Join the rows with newlines. This makes the shape look like a hexagon.

বোনাস: ষড়ভুজক কয়টি তারা রয়েছে তা সন্ধান করতে এটি ব্যবহার করুন:

Ḷ×6S‘

2
ভাই, ব্যাখ্যা অপ্রতিরোধ্য ছিল।
এরিক আউটগলফার

"কেন্দ্রীয়করণের পরমাণু" কী করবে?
ডিজেএমসিএমহেম

@ ডিজেএমসিমেহেম উদাহরণের জন্য 05AB1E উত্তর দেখুন।
এরিক আউটগল্ফার

7

অক্টাভা, 62 58 বাইট

@(n)' *'(dilate(impad(1,2*--n,n),[k='01010'-48;~k;k],n)+1)

পূর্ববর্তী উত্তর:

@(n)' *'(dilate(impad(1,2*(m=n-1),m),[k='01010'-48;~k;k],m)+1)

যে হিসাবে বলা যেতে পারে

(@(n)' *'(dilate(impad(1,2*(m=n-1),m),[k='01010'-48;~k;k],m)+1))(5)

এটি অক্টাভ অনলাইন এ চেষ্টা করুন (পেস্ট করুন)

উদাহরণস্বরূপ জন্য বেস ইমেজ n=5হয়

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

যে দিয়ে তৈরি করা যেতে পারে

impad(1,2*(n-1),n-1)

dilation morphological operatorনিম্নলিখিত প্রতিবেশী মাস্ক ব্যবহার ইমেজ উপর প্রয়োগ 4 বার:

0 1 0 1 0
1 0 1 0 1
0 1 0 1 0

যে দিয়ে তৈরি করা যেতে পারে [k='01010'-48;~k;k]

প্রসারণের ফলাফল:

0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0
0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0
0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0
0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0
0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0

তারপরে যথাক্রমে '' এবং '*' দিয়ে 0 এবং 1 প্রতিস্থাপন করুন

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

6

postgresql9.6, 290 বাইট

do language plpgsql $$ declare s constant smallint:=4;declare n smallint;declare a constant int[]:=array(select generate_series(1,s));begin foreach n in array a||array(select unnest(a)t order by t desc offset 1)loop raise info'%',concat(repeat(' ',s-n),repeat(' *',s+(n-1)));end loop;end;$$

ফর্ম্যাট করা এসকিএল এখানে:

do language plpgsql $$
declare s constant smallint := 4;
declare n smallint;
declare a constant int[] := array(select generate_series(1, s));
begin
foreach n in array a || array(select unnest(a)t order by t desc offset 1) loop
    raise info '%', concat(repeat(' ', s - n), repeat(' *', s + (n - 1)));
end loop;
end;
$$;

আউটপুট:

INFO:      * * * *
INFO:     * * * * *
INFO:    * * * * * *
INFO:   * * * * * * *
INFO:    * * * * * *
INFO:     * * * * *
INFO:      * * * *

lpadআপনাকে কয়েকটা বাইট বাঁচাতে সক্ষম হতে পারে। আমি pl / pgsql ভাষাটিও কল করতাম, তবে এটি আপনাকে do language plpgsql $$এবং সমাপ্তিটি গণনা করতে হবে কিনা তা নিয়ে প্রশ্ন উত্থাপন করে $$;। এগুলি মেটাতে সর্বোত্তমভাবে সম্বোধন করা হবে, যদি তারা আগে না আসে।
jpmc26

এছাড়াও, আপনার একাধিক DECLAREএস প্রয়োজন কেন ? একটিও কাজ করবে না?
jpmc26


6

এপিএল (ডায়ালগ ইউনিকোড) , 40 36 35 33 27 25 বাইট

(⍉⊖⍪1↓⊢)⍣2∘↑⍳↓¨∘⊂'* '⍴⍨+⍨

অনুমান ⎕IO←0, শূন্য-ভিত্তিক সূচক। আউটপুটে প্রতিটি লাইনে একটি শীর্ষস্থানীয় এবং একটি ট্রেলিং স্পেস থাকে।

প্রচুর গল্ফ করার জন্য @ ফ্রাউনফ্রোগ এবং @ জিএনএকে অনেক ধন্যবাদ।

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

কিভাবে এটা কাজ করে

(⍉⊖⍪1↓⊢)⍣2∘↑⍳↓¨∘⊂'* '⍴⍨+⍨   Main function train
                 '* '⍴⍨+⍨     Repeat '* ' up to length 2×⍵
            ⍳↓¨∘⊂             Generate lower-right corner of the hexagon
          ∘↑                  Convert to matrix
(⍉⊖⍪1↓⊢)                      Palindromize vertically and transpose
        2                    ... twice

5

জাভাস্ক্রিপ্ট (ES6), 83 81 বাইট

এটি আমার প্রথম (কোড গল্ফ) উত্তর। আমি আশা করি আমি সবকিছু সঠিকভাবে ফর্ম্যাট করেছি।

a=>{for(b=c=2*a-1;c;)console.log(" ".repeat(d=Math.abs(a-c--))+"* ".repeat(b-d))}

2 বর্তমান ES6 উত্তরগুলির বিপরীতে, আমি পুনরাবৃত্তভাবে কোনও ফাংশন কল করছি না এবং আমি আউটপুট জন্য কনসোল ব্যবহার করছি।


আপনি alertব্রাউজার জেএস নির্দিষ্ট করে ব্যবহার করতে পারবেন?
ফ্লিপট্যাক

@ ফ্লিপট্যাক, আসলেই নয়, যেহেতু আমি ধীরে ধীরে স্ট্রিংটি তৈরি করি (রেখার সাথে লাইন) যদি আমি alertএটি সম্পাদনা করি, তবে এটি সারিবদ্ধভাবে সতর্কতা অবলম্বন করবে এবং পুরো জিনিসটি নয়।
লুক 16

5

হাস্কেল, 99 97 79 বাইট

h n=mapM_(putStrLn.(\k->([k..n]>>" ")++([2..n+k]>>"* ")))([1..n-1]++[n,n-1..1])

ব্যাখ্যা: এই প্রোগ্রামটি এই পর্যবেক্ষণের ভিত্তিতে তৈরি হয়েছে যে এন-হেক্সাগনের প্রতিটি লাইনে (এনকে) স্পেস থাকে তারপরে লাইন সংখ্যার উপর নির্ভর করে কিছু কে নির্ভর করে থাকে as

h n=                                             h is a function of type Int -> IO ()
  mapM_                                          mapM_ executes a function returning 
                                                 monadic actions on all objects 
                                                 in a list, in order. Then it executes 
                                                 these actions, in order. For this code, it 
                                                 transforms each value in the list into a 
                                                 monadic action that prints 
                                                 the corresponding line

      (                                          the function consists of two components
        putStrLn                                 the second part is printing the result of 
                                                 the first part to stdout 

        .                                        concatenating both components

        (\k->                                    the first parts first prints (n-k) spaces 
                                                 and then (n+k-1) asterisks

          ([k..n]>>" ")                          create the list of the integers from 
                                                 k to n (That is actually one more entry
                                                 than necessary, but just results in a
                                                 leading whitespace per line, while
                                                 saving 2 bytes compared to [1..n-k]).
                                                 Then create a new list where 
                                                 each element of that first list is 
                                                 replaced with the string " " and 
                                                 concatenate that result into one string

          ++                                     concatenate both lists

          ([2..n+k]>>"* ")                       create the list of the integers 
                                                 from 2 to n+k (of length n+k-1). 
                                                 Then create a new list where each 
                                                 element of that first list is replaced 
                                                 with the string "* " and concatenate 
                                                 that result into one big string
        ) 

      )         
      ([1..n-1]++[n,n-1..1])                     the list simply goes from 1 to n and 
                                                 back, supplying the k 

সম্পাদনা করুন: মানচিত্রে স্যুইচ করা হয়েছে M_। আমি জানতাম না যে আমদানি না করেই পাওয়া যায়


5

পাইথন 2 , 100 97 89 88 87 81 79 বাইট

@ Flp.Tkc থেকে -1

@Flp থেকে আবার

-2 @eded2002004 ধন্যবাদ সহ। আমি দ্বিতীয় স্লাইস থেকে কীভাবে মুক্তি পেতে পারি তা চেষ্টা করার চেষ্টা করছিলাম তবে সেটিকে ভাবি নি :)

i=input()
a=[" "*(i-x)+"* "*(i+x)for x in range(i)]
print'\n'.join(a+a[-2::-1])

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

উপরের অর্ধের জন্য একটি অ্যারে তৈরি করে তারপরে বিপরীত অ্যারে বিয়োগটি মাঝের লাইনটি প্রিন্ট করে তারপরে প্রিন্ট করে। 1শীর্ষস্থানীয় স্থানের সাথে প্রিন্টগুলি ঠিক "যেমন" থাকে তার বাইরে (আমার ধারণা, যে হিসাবে একটি অনুমোদিত স্থানের সাথে বা অগ্রণী স্থান ছাড়াই *দৃশ্যত একই রকম) ints*


1
এটি 1 - "*" এর জন্য ভুল সমাধান দেয়। আমার মনে হয় সামনে জায়গা ছাড়াই এটারিস্টার্ক হওয়া উচিত?
Ломакин

@ АндрейЛомакин - ওপি থেকে: "যতক্ষণ আউটপুট দৃশ্যত একই থাকে ততক্ষণ নেতৃস্থানীয় এবং পশ্চাদ্বর্তিত স্থানের অনুমতি দেওয়া হয়।" একটি একক তারা দৃশ্যমানভাবে একক তারার মতো একই জায়গাটির সামনে একটি স্থান বা কমপক্ষে এটি আমার ব্যাখ্যা ছিল ;-)
এলপেড্রো

তবে আপনি আসলে ঠিক বলেছেন যে আমি আমার উত্তরে যা বলেছি তার সাথে আমি বিরোধিতা করেছি। আমি পরিষ্কার করার উত্তর আপডেট করেছি। ভাল এখন? বিটিডাব্লু, একটি পুরানো উত্তর সন্ধান এবং একটি সম্ভাব্য ত্রুটি চিহ্নিত করার জন্য দুর্দান্ত কাজ। সম্মান.
এলপেড্রো

1
আমি নিজেই এই চ্যালেঞ্জটি চেষ্টা করছিলাম এবং আরও ভাল কিছু নিয়ে আসতে পারি না, অনুপ্রেরণার জন্য আপনাকে পড়াশোনা করছি।
Ломакин

আমি আশা করি আমার নম্র প্রচেষ্টা আপনাকে সাহায্য করেছে। অবশ্যই আমরা ভবিষ্যতে একসাথে কিছু গল্ফ উপভোগ করব Sure পিপিসি উপভোগ করুন। আমি নিশ্চিত ☺
এলপেড্রো

4

ব্যাচ, 161 বাইট

@echo off
set s=*
set l=for /l %%i in (2,1,%1)do call 
%l%set s= %%s%% *
%l%echo %%s%%&call set s=%%s:~1%% *
echo %s%
%l%set s= %%s:~0,-2%%&call echo %%s%%

দ্রষ্টব্য: লাইন ২ এ ট্রেলিং স্পেস

@echo off
set s=*
rem build up the leading spaces and stars for the first row
for /l %%i in (2,1,%1) do call :s
rem output the top half of the hexagon
for /l %%i in (2,1,%1) do call :t
rem middle (or only) row
echo %s%
rem output the bottom half of the hexagon
for /l %%i in (2,1,%1) do call :b
exit/b
:s
set s= %s% *
exit/b
:t
echo %s%
rem for the top half remove a space and add a star to each row
set s=%s:~1% *
exit/b
:b
rem for the bottom half add a space and remove a star from each row
set s= %s:~0,-2%
echo %s%
exit/b


4

ক্যানভাস , 9 বাইট

╷⁸+* ×]/─

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

বিল্ট ইন মারধর: ডি

ব্যাখ্যা:

{╷⁸+* ×]/─  implicit "{"
{      ]    map over 1..input
 ╷            decrement: 0..input-1
  ⁸+          add the input: input..(input*2-1)
    * ×       repeat "* " that many times
        /   diagonalify that - pad each line with 1 less space than the previous
         ─  palindromize vertically

কেন বিশাল প্যাডিং রয়েছে তা ধারণা নেই তবে এটি অনুমোদিত এবং আমি তাড়াতাড়ি ঠিক করে দিচ্ছি ™ সংশোধন করা হয়েছে? আশা করি আমি জিনিস ভাঙ্গি না



3

পাওয়ারশেল, 91 89 78 68 63 52 48 বাইট

param($n)$n..1+1..$n|gu|%{' '*$_+'* '*(2*$n-$_)}

পরীক্ষার স্ক্রিপ্ট:

$script = {
param($n)$n..1+1..$n|gu|%{' '*$_+'* '*(2*$n-$_)}
}

12,6,5,4,3,2,1 |%{
    $_
    . $script $_
}

আউটপুট (অতিরিক্ত নেতৃস্থানীয় স্থান):

12
            * * * * * * * * * * * *
           * * * * * * * * * * * * *
          * * * * * * * * * * * * * *
         * * * * * * * * * * * * * * *
        * * * * * * * * * * * * * * * *
       * * * * * * * * * * * * * * * * *
      * * * * * * * * * * * * * * * * * *
     * * * * * * * * * * * * * * * * * * *
    * * * * * * * * * * * * * * * * * * * *
   * * * * * * * * * * * * * * * * * * * * *
  * * * * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * * * * * *
  * * * * * * * * * * * * * * * * * * * * * *
   * * * * * * * * * * * * * * * * * * * * *
    * * * * * * * * * * * * * * * * * * * *
     * * * * * * * * * * * * * * * * * * *
      * * * * * * * * * * * * * * * * * *
       * * * * * * * * * * * * * * * * *
        * * * * * * * * * * * * * * * *
         * * * * * * * * * * * * * * *
          * * * * * * * * * * * * * *
           * * * * * * * * * * * * *
            * * * * * * * * * * * *
6
      * * * * * *
     * * * * * * *
    * * * * * * * *
   * * * * * * * * *
  * * * * * * * * * *
 * * * * * * * * * * *
  * * * * * * * * * *
   * * * * * * * * *
    * * * * * * * *
     * * * * * * *
      * * * * * *
5
     * * * * *
    * * * * * *
   * * * * * * *
  * * * * * * * *
 * * * * * * * * *
  * * * * * * * *
   * * * * * * *
    * * * * * *
     * * * * *
4
    * * * *
   * * * * *
  * * * * * *
 * * * * * * *
  * * * * * *
   * * * * *
    * * * *
3
   * * *
  * * * *
 * * * * *
  * * * *
   * * *
2
  * *
 * * *
  * *
1
 *

ব্যাখ্যা:

param($n)           # define script parameter
$n..1+              # int range from n to 1 step -1; append
1..$n|              # int range from 1 to n
gu|                 # alias for Get-unique eliminates equal neighbors - here is 1,1 -> 1
%{                  # for each int from [n, n-1, n-2, ... 2, 1, 2, ... n-2, n-1, n]
    ' '*$_+         # string (' ' have repeated $_ times) append
    '* '*(2*$n-$_)  # string ('* ' have repeated 2*n-$_ times)
}

1
ভাল ব্যবহার gu
অ্যাডমবর্কবার্ক

3

পিএইচপি, 83 79 বাইট

for($p=str_pad;++$y<2*$n=$argn;)echo$p($p("
",1+$k=abs($n-$y)),4*$n-$k-2,"* ");

পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন


এটি কোডোসের উত্তরের কাছাকাছি ; গল্ফ করা হলেও str_padতার চেয়ে ছোট str_repeat
এবং ++লুপ মাথায় কিছু আরও সঞ্চয় করে।


2

রুবি, 54 বাইট

->n{(1-n..n-1).map{|j|i=j.abs;' '*i+'* '*(n*2+~i)}*$/}

লাম্বদা ফাংশনটি আর্গুমেন্ট হিসাবে n নেয় এবং নিউলাইন দ্বারা পৃথক একটি স্ট্রিং দেয়। ( $/ডিফল্ট লাইন বিভাজক সমন্বিত একটি পরিবর্তনীয় containing)

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

f=->n{(1-n..n-1).map{|j|i=j.abs;' '*i+'* '*(n*2+~i)}*$/}

puts f[gets.to_i]

আপনি 3 টি বিন্দুর সাহায্যে (1-n ... n) 1 বাইট সংরক্ষণ করতে পারেন
জিবি

Msক্যমত্যটি putsচার্ট গণনায় আউটপুট কোড (যেমন ) অন্তর্ভুক্ত করা বলে মনে হচ্ছে । তবে সংজ্ঞাটি পুনরায় পড়া এটি কেবল আপনার ফাংশনটির ফলাফল "আউটপুট" করা উচিত যা ফলাফল "রিটার্ন" হিসাবে পড়তে পারে। শীতল সমাধান।
মাতিয়াস বজরল্যান্ড

@ মাটিয়াসবাজারল্যান্ড meta.codegolf.stackexchange.com/a/2456/15599
স্তর নদী সেন্ট


2

স্মাইলব্যাসিক, 74 বাইট

FOR I=0TO N-1P
NEXT
FOR I=N-2TO.STEP-1P
NEXT
DEF P?" "*(N-I);"* "*(N+I)END

একটি অগ্রণী এবং পিছনে স্থান যুক্ত করে।

অক্ষরগুলির একই প্রস্থ এবং উচ্চতা থাকাকালীন এই "হেক্সাগন" ভয়ঙ্কর দেখায় ...


2

কোলাহল / স্কীম

(define (f n)
  (define (s t n)
    (if (= n 0) t (s (~a t "* ") (- n 1))))
  (define (h t p a i)
    (if (= i 0)
        (display t)
        (let ((x (~a t (make-string p #\space) (s "" a) "\n"))
              (q (if (> i n) (- p 1) (+ p 1)))
              (b (if (> i n) (+ a 1) (- a 1))))
          (h x q b (- i 1)))))
  (h "" (- n 1) n (- (* 2 n) 1)))

পরীক্ষামূলক:

(f 1)
*

(f 4)
   * * * *
  * * * * *
 * * * * * *
* * * * * * *
 * * * * * *
  * * * * *
   * * * *

3
সাইটে স্বাগতম! এটি একটি কোড-গল্ফ প্রতিযোগিতা যাতে আপনার বাইট গণনা অন্তর্ভুক্ত করা উচিত। এছাড়াও এই উত্তরটি সংক্ষিপ্ত করার জন্য উপস্থিত প্রচুর শ্বেত স্থানটি আপনি মুছে ফেলতে পারেন।
গম উইজার্ড

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

2

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

n=input()
l=range(n,2*n-1)
S=l+[2*n-1]+l[::-1]
W=range(1,n)
for w in W[::-1]+[0]+W:print" "*w+"* "*S[0];S=S[1:]

একটি বিরক্তিকর, সোজা বাস্তবায়ন (এবং একটি সম্পূর্ণ প্রোগ্রাম)। প্রতিটি লাইনে একটি ট্রেলিং হোয়াইটস্পেস আউটপুট দেয়।

Testcases:

1:
*

2:
 * * 
* * * 
 * * 

3:
  * * * 
 * * * * 
* * * * * 
 * * * * 
  * * * 

4:
   * * * * 
  * * * * * 
 * * * * * * 
* * * * * * * 
 * * * * * * 
  * * * * * 
   * * * * 

2

জাভাস্ক্রিপ্ট (ES6), 143 বাইট

অবশেষে এটি ক্রিসমাস বিরতি (আনন্দময় ক্রিসমাস!), তাই গল্ফ করার জন্য আমার কিছুটা সময় আছে।
এবং ছেলেটি কিছুক্ষণ হয়ে গেছে - তাই বড় বাইট গণনা।
এখানে যায়:

c=[];a=a=>{for(i=0;i<a;i++){c.push(" ".repeat(a-i-1)+"* ".repeat(i+a-1)+"*")}for(j=c.length-2;j>-1;j--)c.push(c[j]);return a==1?"*":c.join`\n`}
console.log(a(3));


2
কয়েকটি উন্নতি: for(j=c.length-2;j>-1;j--)c.push(c[j])হিসাবে লেখা যেতে পারে for(j=a-1;j;c.push(c[--j]))এবং for(i=0;i<a;i++){c.push(" ".repeat(a-i-1)+"* ".repeat(i+a-1)+"*")}হতে পারে for(i=0;i<a;c.push(" ".repeat(a-i-1)+"* ".repeat(a-1+i++));। রিটার্নের বিবৃতিটি সংক্ষিপ্ত করে return a-1?c.join\ n :"*"মোটে এই পরিবর্তনগুলি 18 বি (11 + 7 + 1) সংরক্ষণ করে।
লুক

2

জাভা, 157 149 129 127 বাইট

s->{for(int j=~--s,t;++j<=s;p(s-~s-t,"* "),p(1,"\n"))p(t=j<0?-j:j," ");};<T>void p(int j,T s){for(;j-->0;)System.out.print(s);}
  • জোনাথন ফ্রেচ 8 বাইট অপসারণ করেছেন।
  • কেভিন ক্রুইজসেন 20 বিট সরিয়েছেন।
  • কেভিন ক্রুইজসেন 2 বাইট অপসারণ করেছেন।

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



1
94 বাইট। দ্রষ্টব্য: জাভা 11 রয়েছে String#repeat(int), তবে টিআইও এখনও জেডিকে 10, অতএব অনুকরণ repeat(String,int)পদ্ধতি (একই বাইট-গণনা সহ)। জাভা 11-এ আসল কোডটি হবে:s->{for(int j=~--s,t;++j<=s;System.out.println(" ".repeat(t)+"* ".repeat(s-~s-t)))t=j<0?-j:j;}
কেভিন ক্রুইজসেন

1
@ ইউজিন শিওর :) সেক্ষেত্রে বর্তমান জাভা সংস্করণে গল্ফ করার জন্য কিছু জিনিস (8+) আপাতত: 129 বাইট
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন এটি বেশ ভারী গল্ফ করছে, ধন্যবাদ, ধন্যবাদ।
ইউজিন

1
আবার আমি. -২ বাইটের জন্য গল্ফের আরও একটি জিনিস পাওয়া গেছে। 127 বাইট এটি উপরের জাভা 11 সমাধানে 1 বাইট গল্ফ ব্যবহার করতে পারেন ।
কেভিন ক্রুইজসেন

2

হেক্সাগনি (লিনিয়ার), 128 127 126 বাইট

নোট করুন যে এটি হেক্সাগনি নয়, এসোটেরিক আইডিইতে কেবলমাত্র একটি (মেটা-) টিমভি সমর্থিত, সুতরাং এটি অনুগ্রহের যোগ্য নয়

তবে এটি একটি হেক্সাগনি সমাধানে রূপান্তরিত হতে পারে (এবং আমি মনে করি এটি এই সমাধানের চেয়ে ছোট হবে) আমি পরে এটি করতে পারি। আমি এখানে এটি বেশি চেষ্টা করেছিলাম

প্রাথমিক লাগে 3 বাইট ( e2 9d a2)। প্রতিটি নিউলাইন 1 বাইট ( 0a) লাগে ।

❢?{2'*=(
A
if > 0
 "-"&}=&~}=&}=?&
 B
 if > 0
  }P0;'(
  goto B
 &{&'-{=-(
 C
 if > 0
  'P0;Q0;}(
  goto C
 {M8;{(
 goto A
@

না এটি অনলাইনে চেষ্টা করুন! এটি কেবল এসোটেরিক আইডিইতে কাজ করে।

টীকাবিহীন কোড:

❢?        # read input n
[n]
{2'*=(     # x = 2n-1
[x]
A
if > 0    # loop (x) from 2n-1 to 1
 "-      # a = x - n
 [a]
 "&}=&~}=&    # a = abs(a). Let K be this amount
 }=?&
 B
 if > 0       # print ' ' (a) times
  }P0;'(
  goto B
 &        # current cell = a (= K)
 {&       # a = n if K>0 else x
          # Note that K=abs(x-n). So if K==0 then x==n.
          # Therefore after this step a is always equal to n.
 '-{=-    # compute n-(K-n) = 2n+K
 (        # decrement, get 2n+K-1
 C
 if > 0   # print ' *' this many times
  'P0;Q0;}(
  goto C
 {M8;{    # print a newline, goto x
 (        # x -= 1
 goto A
@

2

জাপট -R, 11 10 বাইট

Æ°çSi*Ãû ê

এটি ব্যবহার করে দেখুন (বা একাধিক পরীক্ষা চালানোর জন্য টিআইও ব্যবহার করুন )


ব্যাখ্যা

               :Implicit input of integer U
Æ              :Map the range [0,U)
 °             :  Postfix increment U
  ç            :  Repeat
   S           :    Space
    i*         :    Prepend asterisk
      Ã        :End map
       û       :Centre pad each string with spaces to the length of the longest string
         ê     :Palindromise
               :Implicitly join with newlines and output
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.