কোড গল্ফ: আপনার নিজের পোষা ASCII সাপ


34

সুতরাং, আমি নিজেই একটি ওয়ান-লাইন লিখেছি যা কনসোলে একটি সাপ ছাপিয়েছিল। এটি কিছুটা মজাদার এবং আমি ভাবলাম কীভাবে আমি আমার কোডটি ঘনীভূত করতে পারি ...

এখানে একটি (সংক্ষিপ্ত) উদাহরণ আউটপুট:

                +
                 +
                  +
                   +
                   +
                   +
                  +
                   +
                    +
                    +
                    +
                     +
                     +
                      +
                      +
                       +
                      +
                     +
                     +
                    +

এখানে চশমা:

  • প্রতিটি লাইনে, একক নন-হোয়াইটস্পেস অক্ষর (আপনি যেটি পছন্দ করুন) কনসোলে প্রিন্ট করা হয়, প্রাথমিকভাবে এর বামে 29 থেকে 31 স্পেসের প্যাডিং সহ।
  • প্রতিটি পুনরাবৃত্তি, এই তিনটি ক্রিয়াকলাপের মধ্যে একটি এলোমেলো সিদ্ধান্ত নেওয়া হয়
    • প্যাডিংয়ের পরিমাণ 1 দ্বারা হ্রাস পায়
    • প্যাডিংয়ের পরিমাণ একই থাকে
    • প্যাডিংয়ের পরিমাণ 1 বাড়ে

30-সেগমেন্ট দীর্ঘ কনসোলে একটি সাপ প্রিন্ট করতে 30 বার এটি করুন।

বাইটস মধ্যে সংক্ষিপ্ত উত্তর।


আমরা কি লাইনের একটি অ্যারে ফিরিয়ে দিতে পারি? নেতৃস্থানীয় / পিছনে স্থান বা নিউলাইন অনুমোদিত?
শেগি

1
আমি ধরে নিলাম প্রতিটি লাইনের পিছনে ফাঁকা স্থানগুলি অনুমোদিত, তাই না?
লুইস মেন্ডো

1
"এলোমেলো" মানে কি? অভিন্ন এলোমেলো? তিনটি ফলাফলের প্রতিটিতে ইতিবাচক সমর্থন সহ কোনও বিতরণ থেকে এলোমেলো? যেকোন বিতরণ থেকে এলোমেলো? প্রোগ্রামটির প্রতিটি রানের ফলাফলগুলি কী আলাদা হতে হবে?
নাথানিয়েল

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

1
এখনই, দুটি পয়েন্ট রয়েছে যা অস্পষ্ট: 1) এলোমেলো অর্থ কি অভিন্ন র্যান্ডম? ( এই উত্তরকে প্রভাবিত করে ) এবং ২) প্রতিবার আউটপুট আলাদা হওয়া উচিত? (উদাহরণস্বরূপ, এলোমেলো সংখ্যা জেনারেটরটি কি
শিবিরবিহীন করা

উত্তর:


14

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

30DF2Ý<+ΩD0sú,

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

ব্যবহার 0

ব্যাখ্যা

30DF2Ý<+ΩD0sú,
30D            # Push 30 to the stack (One for the amount of iterations we are going to perform and one for the initial padding)
   F           # Pop one of the 30s and perform the following that many times...
    2Ý          # Push [0,1,2] ...
      <         # and create [-1,0,1] from that
       +        # Add the last padding to every entry (e.g. 30 in the beginning resulting in [29,30,31]
        Ω       # Pick one of the results at random ...
         D      # and push it to the stack twice
          0     # Push 0 (Any character will work fine here) ...
           sú   # and pad it with the randomly chosen amount of spaces in the front
             ,  # Finally print the result with a trailing newline

38
05 এ বি 1 ই: 0-বাইটস, এটি অনলাইনে চেষ্টা করুন! ... অপেক্ষা করুন, না, যদিও প্রায়।
যাদু অক্টোপাস উরন

14

র্যান্ডম ব্রেনফাক , 123 122 121 বাইট

+[--[<]>>+<-]>+[->+>+>+<<<]++++++++++>>++<[>>[->+<<.>]>[-<+>]>?>+++<[>->+<[>]>[<+>-]<<[<]>-]>-->,<[-<<<+>>>]<<<<+.-<<.>-]

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

?কমান্ডের সহায়ক সংযোজন সহ র্যান্ডম ব্রেইনফাক ব্রেইনফাকের একটি এক্সটেনশন যা বর্তমান সেলটি একটি এলোমেলো বাইটে সেট করে। এটি !s দ্বারা তৈরি একটি সাপ মুদ্রণ করে , এটি যথেষ্ট সাপের তুলনায় পাদদেশের মতো দেখায়।

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

+[--[<]>>+<-]>+ Create the value 30
[->+>+>+<<<]    Copy it three times
++++++++++      Create a newline cell
>>++<            Adds 2 to the second copy to make it a space and move to the counter
[ While counter
  >>[->+<<.>]>[-<+>] Print out the padding cell number of spaces
  ?>+++<[>->+<[>]>[<+>-]<<[<]>-] Get 3-(random byte%3)
  >-->,<[-<<<+>>>]   Add (result-2) to the padding cell
  <<<<+.-<           Print an exclamation mark
  <<.                Print a newline
  >-                 Decrement counter
] end loop

আর একটি সমাধান যা প্রশ্নটির চিঠিতে আটকে থাকে, আত্মার চেয়ে নয়।

87 বাইট

+[--[<]>>+<-]>+[->+>+>+<<<]++++++++++>++>[>[->+<<<.>>]>[-<+>]?[,<+>]?[,<->]<<<+.-<.>>-]

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

প্যাডিংটি একা রেখে যাওয়ার পক্ষে এটি ভারী পক্ষপাতদুষ্ট, তবে প্যাডিং বৃদ্ধি বা হ্রাস উভয়ই সমানভাবে সম্ভব possible প্রতিটির 256 টির মধ্যে 1 টির চেয়ে কিছুটা কম।


খুব সুন্দর! আমি ?আদেশ সম্পর্কে অজ্ঞাত ছিলাম । +1
গ্র্যান্ট মিলার

@ গ্রান্টমিলার ?কেবল র্যান্ডম ব্রেইনফাকে উপলভ্য , ক্লাসিক ব্রেইনফাক নয়
জো কিং

8

সি (জিসিসি) , 61 58 56 বাইট

বিধি পরিবর্তনগুলি প্রতিফলিত করতে উত্তর সম্পাদিত হয়েছে ...

i;f(s){for(s=i=31;--i;printf("%*d\n",s+=1-rand()%3,8));}

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


s+=1-rand()%3প্রিন্টফ ফাংশনে গিয়ে একটি বাইট সংরক্ষণ করুন । i;f(s){for(s=i=31;--i;)printf("%*c\n",s+=1-rand()%3,43);}
ভেলাস

@ ভেলাস যা প্রথম লাইনে প্রশ্নটিতে উল্লিখিত 30 এর পরিবর্তে আলাদা আলাদা জায়গার স্থান তৈরি করে।
স্টেডিবক্স

@ স্টেডিবক্স যা মন্তব্যগুলিতে আপাতদৃষ্টিতে অনুমোদিত ...
কেভিন ক্রুইজসেন

7

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


30* +
-29{¶<`^
 
S,2@1`

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

ব্যাখ্যা


30* +

ওয়ার্কিং স্ট্রিংটি প্রথম লাইনে শুরু করুন, অর্থাৎ 30 স্পেস এবং এ +

-29{¶<`^
 

দ্বিতীয় লাইনে একটি জায়গা আছে। -29{প্রোগ্রামের বাকী অংশটি একটি লুপে মোড়ক করে, যা 29 বার সঞ্চালিত হয়। ¶<প্রতিটি লুপ পুনরাবৃত্তির শুরুর দিকে একটি চলমান লাইনফিড দিয়ে ওয়ার্কিং স্ট্রিং মুদ্রণ করে। পারমাণবিক পর্যায় নিজেই স্ট্রিংয়ের শুরুতে একটি স্থান সন্নিবেশ করায় (প্রাথমিক ধারণাটি একটি স্থান সন্নিবেশ করানো এবং তারপরে এলোমেলোভাবে 0-2 স্পেস সরিয়ে ফেলতে হবে, কারণ এটি মুছে ফেলা, সন্নিবেশ করা এবং কোনও বিকল্পের মধ্যে এলোমেলোভাবে বেছে নেওয়ার চেয়ে একটি বাইট ছোট)।

S,2@1`

এটি ইনপুটটির বিপরীতে খালি রেজেক্সের সাথে মেলে যা আমাদের অক্ষরের মধ্যে প্রতিটি অবস্থান দেয় (এবং স্ট্রিংয়ের শুরু এবং শেষ)। তারপরে ,2কেবল প্রথম তিনটি ম্যাচ রাখে, অর্থাত ম্যাচগুলি শূন্যের পরে, এক এবং দুটি ব্যবধান। @এই তিনটি ম্যাচের একটি এলোমেলো নির্বাচন করে। তারপরে বিভক্ত পর্যায়ে ( S) সেই ম্যাচের চারপাশে ইনপুটটি বিভক্ত করে। এবং 1বিভক্ত শুধুমাত্র দ্বিতীয় অংশ রাখতে এটি বলে। অন্য কথায়, আমরা আমাদের এলোমেলো ম্যাচ পর্যন্ত সবকিছু বাতিল করে দিই।

30 তম লাইন, যা চূড়ান্ত লুপ পুনরাবৃত্তির ফলাফল, প্রোগ্রামের শেষে ছাপানো হয়।


আপনি কি জানেন যে 0--2 স্পেসগুলি অপসারণের চেয়ে আরও ছোট? চারপাশে স্থান পরিবর্তন! । যাইহোক, নতুন রেটিনা দুর্দান্ত: ডি
লিও

7

ভিবিএ, 60 59 49 বাইট

For l=1To 30:?Spc(30+i)"+":i=i+Sgn(Rnd()-.5):Next

এটি তাত্ক্ষণিক উইন্ডোতে পেস্ট করুন এবং এন্টার টিপুন। (নিশ্চিত করুন যে সুস্পষ্ট ঘোষণাটি বন্ধ আছে!)

দূরে সম্ভাবনা বেশি একটি লাইন থাকতে চেয়ে সরাতে (অর্থাত ক্রিয়া সমানভাবে পরিমেয় হয় না) কিন্তু যে একটি নির্দিষ্ট প্রয়োজন ছিল না (সৌভাগ্যবশত!)

D সম্পাদনা করুন and এবং এর মধ্যে স্থান সরিয়ে 1 বাইট সংরক্ষণ করা=1To

{EDIT2 10 সংরক্ষিত 10 বাইট remoel এর মন্তব্যের ধন্যবাদ

পুরানো সংস্করণ:

'V1
i=30:For l=1 To 30:?String(i," ")&"+":i=i+Sgn(Rnd()-.5):Next
'V2
i=30:For l=1To 30:?String(i," ")&"+":i=i+Sgn(Rnd()-.5):Next

5
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার

2
আপনি প্রতিস্থাপন কয়েক বাইট সংরক্ষণ করতে পারবেন String(i," ")করার Spc(30+i)তারপর Remove i=30:। অথবা -1 বাইট অপসারণ করে &। :)
রিয়েল থেকে

7

সি # (.নেট কোর), 112 110 106 100 99 98 বাইট

v=>{var r="";for(int t=30,i=t;i-->0;r+="+\n".PadLeft(t+=new System.Random().Next(3)-1));return r;}

-1 বাইট ধন্যবাদ @ রজনগুলকে
-1 বাইট @Ahmaan ধন্যবাদ ।

ব্যাখ্যা:

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

v=>{                      // Method with empty unused parameter and no return-type
  var r="";               //  Result-string, starting empty
  for(int t=30,           //  Temp-integer, starting at 30
      i=t;i-->0;          //  Loop 30 times
    r+=                   //   Append the result-String with:
       "+\n"              //    The character and a new-line,
            .PadLeft(     //    left-padded with `t` spaces,
                     t+=new System.Random().Next(3)-1));
                          //    after `t` first has been changed with -1, 0, or 1 randomly
  return r;}              //  Return the result-string

একটি আশ্চর্যের বিষয়: আমি যদি new Random().Next()স্থানীয়ভাবে একাধিকবার কল করি (। নেট ফ্রেমওয়ার্ক সংস্করণ 4.6.1) আমি সর্বদা একই ফলাফল পাই। Thread.Sleep(10)নির্ভরযোগ্যভাবে বিভিন্ন ফলাফল পেতে আমাকে কলটির মধ্যে একটি যুক্ত করতে হবে। 10 মিনিটেরও কম ঘুমের সাথে আমি মাঝে মাঝে এখনও একই ফলাফল পাই। সুতরাং। নেট-ফ্রেমওয়ার্ক এবং টিআইও (। নেট-কোর) এর বিভিন্ন পিআরএনজি রয়েছে বা কমপক্ষে বিভিন্ন বীজ ব্যবহার করুন। আমি যদি আপনার প্রোগ্রামটিকে টিআইও-তে সি # -মনোতে স্যুইচ করি তবে আমি স্থানীয়ভাবে নেট নেট ফ্রেমওয়ার্কে আসার মতো আচরণ পাই get
রাজনগুল

@ রজনগুল হুম, সি # (মনো সি # সংকলক) এর সাথে আউটপুটটি সত্যই অদ্ভুত ..
কেভিন ক্রুইজসেন

3
@ রজনগুল সময়টিকে new Random()বীজ হিসাবে ব্যবহার করে তাই একটি শক্ত লুপে সময় একই এবং ফলস্বরূপ একই।
TheLethalCoder

@ দ্য লেথাল কোডার: হ্যাঁ, আমি (কম-বেশি) এর প্রত্যাশা করেছি। আশ্চর্যের বিষয়গুলি হ'ল 1)। নেট-কোর (কমপক্ষে টিআইওতে) অন্যরকম আচরণ করে। 2) যেটি আমার Thread.Sleep(10)নির্ভরযোগ্যভাবে বিভিন্ন ফলাফল পেতে হবে এবং Thread.Sleep(1)এমনকি 9 এমএসও যথেষ্ট নয়।
রাজনগুল

@ রজনগুল 1, 9 বা 10 মিমি ভাল ঘুমাচ্ছিল অন্যান্য প্রসেসের উপর নির্ভর করে একই সময়ের জন্য ঘুমানো উচিত ... সত্যই অদ্ভুত।
TheLethalCoder

7

সি, 56 বাইট

n;f(p){n>29?n=0:f(printf("%*d\n",n++?p-rand()%3:31,0));}

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

ব্যাখ্যা:

n; // As a global variable, n is initialized to zero.
f(p)
{
    // Call the function recursively until n > 29.
    n > 29

        // At the end, set n back to zero.
        ? n=0

        // On the first iteration, n == 0 and p has an indeterminate value.
        // 'n++ ? p-rand()%3 : 31' returns 31 (without reading p), and thus
        // 30 spaces get printed. printf() returns the number of characters
        // printed, 32 (30 spaces + '0' + '\n').
        //    On subsequent iterations, p has the value the previous printf
        // call returned, which is the padding on last iteration + 2. Also,
        // n > 0, so the same expression now returns p-rand()%3, and thus
        // the padding changes either by -1, 0, or 1 spaces. The function
        // is again called with the value of the current line's padding + 2.
        : f(printf("%*d\n", n++ ? p-rand()%3 : 31, 0));
}

সি (জিসিসি) , 55 বাইট

n;f(p){n=n<30&&f(printf("%*d\n",n++?p-rand()%3:31,0));}

এফ "রিটার্নিং" ফাংশনে n এর জন্য নির্ধারিত মানের উপর নির্ভর করে , যা অপরিজ্ঞাত আচরণ, তবে কোনও অপ্টিমাইজেশন সক্ষম না হলে জিসিসির সাথে ধারাবাহিকভাবে কাজ করে।

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


6

জাভাস্ক্রিপ্ট (ES8), 63 62 60 বাইট

একটি পিছনের নিউলাইন অন্তর্ভুক্ত। *2-1সঙ্গে প্রতিস্থাপন করা যেতে পারে-.51 বাইট সাশ্রয়ের জন্য তবে প্রতিটি লাইনের আগের লাইনের সমান দৈর্ঘ্য হওয়ার সম্ভাবনা অনেক বেড়ে যায়। অবশ্যই, "র্যান্ডম" চ্যালেঞ্জ হিসাবে সংজ্ঞায়িত না হওয়ায়, মোট বাইট গণনা 55 এর জন্য আরএনজি প্রতিস্থাপন করা যেতে পারে ।new Date%3-1

f=(x=y=30)=>x?``.padEnd(y+=Math.random()*2-1)+`+
`+f(--x):``

আমার নাম ধরার আগে কারও মন্তব্য মুছে ফেলা হয়েছে এমন একজনকে বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে। আমি আসলে এটি দিয়ে এইভাবে চেষ্টা করতামrepeat এবং padStartকিন্তু চেষ্টা করতে ভাবিনি padEnd- কেন জানি না!


বোনাস

একই সংখ্যক বাইটের জন্য, এখানে এমন একটি সংস্করণ যা প্রারম্ভিক স্থান এবং পুনরাবৃত্তিকে ইনপুট হিসাবে গ্রহণ করে।

f=(x,y=x)=>x?``.padEnd(y)+`+
`+f(--x,y+Math.random()*2-1):``


f=(x=y=30)=>x?`+\n`.padStart(y+=Math.random()*2-1)+f(--x):``এক বাইট খাটো। (দ্রষ্টব্য: যেহেতু মন্তব্য মন্তব্যগুলিতে লাইন বিরতির অনুমতি দেয় না, তাই আমাকে লাইন বিরতি ব্যবহার করার পরিবর্তে \ n টাইপ করতে হয়েছিল))
স্টেফনচ

ধন্যবাদ, @ স্টেফনচ দুর্ভাগ্যক্রমে, এমনকি প্রাথমিক মান সহ y=31, প্রথম লাইনটি খুব ছোট হওয়ার সম্ভাবনা থাকবে। tio.run/##BcFLDsIgEADQvSeZkUCs7kzQE7hyqSYzKfRjKBCYGHp6fO/…
শেগি

1
আমি ভুল হলে আমাকে সংশোধন করুন, তবে আপনার বর্তমান সমাধানটিও সেই সমস্যাটি ভোগ করে না?
স্টেফনচ

1
প্রথম লাইন থাকা উচিত ঠিক 30 শূণ্যস্থান চ্যালেঞ্জ অনুযায়ী।
নিট

1
@Nit, অপ জানিয়েছেন যে তিনি প্রথম লাইন পারে তা করার পুনরাবৃত্তি অনুরোধ সত্ত্বেও 29-31 খালি জায়গা থাকা কিন্তু চ্যালেঞ্জ মধ্যে আসলে সম্পাদন করা এখনো।
শেগি

6

জাভা 8, 89 87 বাইট

প্রথম গল্ফ, আমি নিশ্চিত এটি আরও ভাল হতে পারে ..

সম্পাদনা করুন: স্টেডিবক্সকে প্রথম পংক্তির জন্য ধন্যবাদ নির্দিষ্ট করা হয়েছে

l->{for(int a=31,b=a;--a>0;){System.out.printf("%"+b+"c\n",'+');b+=2-Math.random()*3;}}

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

 l->{                                           //Begin lambda
    for(int a=31,b=a;--a>0;)                  //Initialise vars, loop through 30 lines
    {
        System.out.printf("%"+b+"c\n",'+');     //Print result
        b+=2-Math.random()*3;                   //Change padding by -1, 0, or 1
    }

5
পিপিসিজিতে আপনাকে স্বাগতম! :)
শেগি


6

পাইথন 2 , 83 65 64 বাইট

সোজা পদ্ধতি:

import os
k=30
exec"print' '*k+'+';k+=ord(os.urandom(1))%3-1;"*k

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

কিছু রাইট সংরক্ষণ করার জন্য @ রডকে ধন্যবাদ! @Ovs -1 বাইট জন্য ধন্যবাদ!

সম্পাদনা করুন: ভেরিয়েবলের নাম এবং আউটপুট স্ট্রিংটি অক্ষরের 's' এ পরিবর্তিত হয়েছে

88 বাইটের জন্য আরও সাপের মতো আউটপুট:

from random import*
s=[30,0]
exec"print' '*sum(s)+'(S)'[s[-1]+1];s+=[randint(-1,1)];"*30

1
আমি এই পছন্দ। সত্যিই ঝরঝরে সমাধান।
লাইনমেড


5

কাঠকয়লা , 14 বাইট

× ³⁰F³⁰«↙+M‽³→

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

× ³⁰            Print 30 spaces (forces the desired indentation)
    F³⁰«        Repeat 30 times
        ↙+      Print a `+` and move down and left one square
          M‽³→  Move right a random number of squares from 0 to 2

প্রাথমিক ইন্ডেন্টেশন প্রয়োজনীয়তা না থাকলে কেবলমাত্র 10 বাইট হবে।


@ কেভিন ক্রুজসেন হুম, এটি বিশ্রী। কারণ চারকোল ডিফল্টরূপে ছাঁটাই করতে পছন্দ করে।
নিল

5

পিএইচপি, 61 বাইট

for($p=32;$i<30;$i++)echo str_pad("+
",$p+=rand(-1,1),' ',0);

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


8
$i<30;$i++$i++<30;2 বাইট সংরক্ষণ করতে পারে ।
কেভিন ক্রুইজসেন

2
55 বাইট: for($p=30;$i++<30;$p+=rand(-1,1))printf("%{$p}s\n",'+');(এটি \n1 চর হিসাবে গণনা করা হয়, এবং একটি বাস্তব নিউলাইন দ্বারা প্রতিস্থাপন করা উচিত)
ইসমাইল মিগুয়েল

2
সতর্কতা ব্যতীত বিকল্প 55-বাইট দীর্ঘ: for($i=$p=30;$i--;$p+=rand(-1,1))printf("%{$p}s\n",'+');
ইসমাইল মিগুয়েল

5

জাভা 8, 131 129 127 126 119 108 101 বাইট

v->{String r="";for(int i=30,j,t=i;i-->0;r+="+\n")for(j=t+=Math.random()*3-1;j-->0;r+=" ");return r;}

ব্যাখ্যা:

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

v->{                     // Method with empty unused parameter and String return-type
  String r="";           //  Result-String, starting empty
  for(int i=30,j,t=i;    //  Two index integers, and a temp integer (starting at 30)
      i-->0;             //  Loop 30 times:
      r+="+\n")          //    After every iteration: Append the character and a new-line
    for(j=t+=Math.random()*3-1;
                         //   Change `t` with -1, 0, or 1 randomly
        j-->0;r+=" ");   //    And append that many spaces to the result-String
  return r;}             //  Return the result-String

পুরাতন 119 বাইট উত্তর:

v->{String s="",r=s;int i=90,t=30;for(;i-->t;s+=" ");for(;i-->0;t+=Math.random()*3-1)r+=s.substring(t)+"+\n";return r;}

ব্যাখ্যা:

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

v->{                      // Method with empty unused parameter and String return-type
  String s="",            //  Temp-String, starting empty
         r=s;             //  Result-String, starting empty
  int i=90,t=30;          //  Temp integer, starting at 30
  for(;i-->t;s+=" ");     //  Fill the temp String with 60 spaces
  for(;i-->0;             //  Loop 30 times:
      t+=Math.random()*3-1//    After every iteration: Change `t` with -1, 0, or 1 randomly
    r+=s.substring(t)     //   Append the result with `60-t` amount of spaces
       +"+\n";            //   + the character and a new-line
  return r;}              //  Return the result-String

4

আর , 72 69 67 বাইট

cat(sprintf(paste0("% ",cumsum(c(30,sample(3,29,T)-2)),"s"),"+\n"))

জহিরো মোড়কে 2 অতিরিক্ত বাইটের জন্য ধন্যবাদ !

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


থেকে স্যুইচ sample(3,29,T)-2করতে runif(29,-1,1)2 দ্বারা বাইট গণনা কমবে কিন্তু প্যাচসমূহ সমান সম্ভাবনা আর নেই। এবং আপনি কি paste("%"পরিবর্তে স্যুইচ করতে পারেন paste0("% "বা আমি এখানে কিছু মিস করছি?
শিফট

@ রিফ্ট যদি আমি পেস্ট ব্যবহার করতাম তবে ফলিত স্ট্রিংগুলি % 30 sপরিবর্তে ফর্মের হয়ে থাকত % 30s। যেমনটি আপনি বলেছিলেন runifযে সম্ভাবনাগুলি গণ্ডগোল করবে।
প্লানাপাস

স্থানীয়ভাবে sprintf("%30s"), sprintf("% 30s")এবং sprintf("% 30 s")আমার জন্য একই ফলাফল শূণ্য। তবে টিআইওতে কেবল প্রথম দু'জনের অভিন্ন ফলাফল রয়েছে, তাই paste0("%"একটি বাইট সংরক্ষণ করা উচিত। এবং প্রতিটি পদক্ষেপের একই সম্ভাবনা রয়েছে এমন কোনও প্রয়োজন নেই।
রিফ্ট

4

জাপট , 13 বাইট

লাইনের একটি অ্যারে প্রদান করে।

30ÆQù1nH±1n3ö

এটা পরীক্ষা করো


ব্যাখ্যা

30Æ               :Create the range [0,30) and pass each through a function
   Q              :  The " character
    ù             :  Pad start to length...
           3ö     :    Random element from the range [0,3)
         1n       :    Subtract 1
       H±         :    Add the result of that to H (inititally 32)
     1n           :    Subtract 1 to avoid the possibility of the first line being 33 characters long in total

বোনাস

2 বাইট কমের জন্য , এখানে এমন একটি সংস্করণ যা প্রারম্ভিক স্থান এবং পুনরাবৃত্তিকে ইনপুট হিসাবে গ্রহণ করে।

U°ÆQùU±1n3ö

চেষ্টা করে দেখুন


বিকল্প আরএনজি

শেষ 4 টি বাইট নিম্নলিখিত যে কোনওটির সাথে প্রতিস্থাপন করা যেতে পারে:

MrJ1     :A random float between -1 and 1
Jõ ö     :Generate the range [-1,1] and return a random element
3ö É     :An alternative way of writing the method used above
½nMr     :0.5 subtracted from a random float between 0 and 1

1
বাহ, বিশ্বাস করতে পারি না আমরা এই মুহুর্তে জিতেছি! আমি মনে করি আপনার সাথে একটি বাইট সংরক্ষণ করতে পারবেন এই (মোবাইল তাই আমি সত্যিই যাচাই করতে পারে না)
ETHproductions

@ ইথ প্রডাকশন: হা! এটি আমি যা দিয়ে শুরু করেছি তার অনুরূপ। সমস্যা হচ্ছে, যদিও, যদি -1প্রথম পুনরাবৃত্তির উপর RNG দ্বারা ফিরিয়ে দেওয়া হয়, আমরা একটি মোট লাইন দৈর্ঘ্য দিয়ে শেষ করব 29যখন এটি হওয়া উচিত 30, 31বা 32
শেগি

হুম, আপনার সংস্করণটি তার চারপাশে কীভাবে যায় সে সম্পর্কে আমি বিভ্রান্ত হয়ে পড়েছি ... এছাড়াও, আমি বিশ্বাস করি যে ওপি মন্তব্যগুলিতে স্পষ্ট করে বলেছে যে প্রাথমিক পুনরাবৃত্তিতে কোনও অতিরিক্ত স্থান সরিয়ে নেওয়া বা যুক্ত করা হয় কিনা সেগুলি তারা বিবেচ্য নয়।
ETH প্রোডাকশনগুলি

আসলে আমি "যখন এটি 30, 31, বা 32 হওয়া উচিত" দ্বারা বিভ্রান্ত হয়ে পড়েছি — কোথা থেকে এটি প্রয়োজনীয়?
ETH প্রোডাকশনগুলি

@ETHproductions: আমরা দিয়ে শুরু 30এবং তারপর যোগ -1, 0বা 1আমাদের দান 29, 30 বা 31- যোগ "এবং যে আমাদের একটি মোট দৈর্ঘ্য দেয় 30, 31বা 32প্রথম লাইন জন্য।
শেগি

4

সুইফট , 101 বাইট

import UIKit
var g=29;for _ in 0...g{print((0..<g).map{_ in" "}.joined(),0);g+=Int(arc4random()%3)-1}

ব্যাখ্যা

একটি সম্পূর্ণ প্রোগ্রাম। এটি একটি বরং বিজোড় কৌশল ব্যবহার করে: মডিউলটির arc4random()সদস্য Darwin, তবে UIKitএটি ইনস্টল করা এই ফাংশনটির সাথে আসে, সুতরাং এটি একটি বাইট সংরক্ষণ করে :) এছাড়াও স্ট্রিংগুলিকে পুনরাবৃত্তি করার জন্য আমার স্যুইফ্ট গল্ফিংয়ের একটি টিপ ব্যবহার করে bit

import UIKit        // Imports the UIKit module, necessary for the RNG.
var g=29;           // Declares an integer variable g by assigning it to 30.
for _ in 0 ... g {  // Execute the code block 30 times (for each integer in [0; g]):
 print(             // Output the following:
  (0..<g).map       // For each integer in [0; g)...
   {_ in" "}        // ... return a literal space character. 
    .joined()       // ... And join the result to a single string.
             ,0     // Also print a "0" preceded by a single space (g starts from 29).
 );
g+=                 // Increment the variable g by...
   arc4random()%3   // ... A random integer, modulo 3...
   Int(...)-1       // ... Casted to an integer (yes, this is needed!) and decremented.
}

for _ in 0 ... g30 টি (0 থেকে 29 (লুপ থেকে লুপ) এর পরিবর্তে এখন 29 বার কোড ব্লক কার্যকর করে না ?
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন না, 0...gসমস্ত সংখ্যার [0; g] । আমার খারাপ, ব্যাখ্যা স্থির। [0; তে0..<g পূর্ণসংখ্যার উত্পন্ন করবে ) ছ) : পি
মিঃ এক্সকোডার

আহ, [0; g)আপনি [0; g]আমাকে সত্যই বিভ্রান্ত করার জন্য সম্পাদনা করেছেন। :) হুম, তবে কি আর সেই ক্ষেত্রে শুরু করা g=30এবং লুপ করা সম্ভব নয় [1; g]?
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন লুপিং হয় হয় [0; g)বা [1; g]নিশ্চিতভাবেই সম্ভব হতে পারে যদি আমি এর g=30পরিবর্তে বেছে নিই তবে তারপরে print(...,0)পরিবর্তন করা দরকার print(...+"0"), কারণ অন্যথায় 0 এর আগে অতিরিক্ত (বহিরাগত) স্থান পুনরায় চাপানো হবে। যেভাবেই হোক, বাইট গণনাটি একই থাকে।
মিঃ এক্সকোডার

4

পার্ল, 36 বাইট

perl -E '$#a=29;map{$#a+=rand(3)-say"@a -"}@a'

খুব ভাল. আমি সর্বদা ভুলে যাই আপনি এর মতো একটি অ্যারে দৈর্ঘ্য সেট করতে পারেন ... এবং sayবিয়োগের জন্য ব্যবহার করে । আমি কি ভেবে ভেবে ঠিক আছি যে এটি যখন $#aরেফারেন্স না হয়ে বর্ধিত হয় তখন রান সংখ্যা পরিবর্তন করে না ?
ডোম হেস্টিংস

@ ডোমহাস্টিংস: এটি কারণ আমি ব্যবহার করি mapযা প্রথমে স্ট্যাকের উপাদানগুলি রাখে out forএকটি অপ্রত্যাশিত লুপ দৈর্ঘ্য না এবং হত would
টন হসপেল

এটি জানতে সত্যিই দরকারী useful ধন্যবাদ!
ডোম হেস্টিংস

দুর্দান্ত গল্ফিং আমি এর সাথে অন্য একটি বাইট চাঁচা দেওয়ার চেষ্টা করেছি perl -E 'map{$#a+=rand(3)-say"@a -"}@a=1..30', তবে এটি কখনও কখনও (প্রতিবার নয়) ফলে বিভাগের ত্রুটি হয়। এটি পার্ল v5.22.1 এবং v5.16.3 এ কোনও বাগ হতে পারে?
কেজটিল এস

@ কেজিল হ্যাঁ, এটি একটি সুপরিচিত সমস্যা যা সম্ভবত কখনও স্থির করা যাবে না। একটি অ্যারে লুপ করার সময় এন্ট্রিগুলি একটি অতিরিক্ত পুনঃআকাউন্ট পাওয়া যায় না, সুতরাং আপনি যদি এগুলি মুছে ফেলেন তবে লুপটি তাদের কাছে পৌঁছানোর সময় এবং তারা মুক্ত স্মৃতিতে আঘাত করার পরে সেগুলি মুক্ত হয়। ভাগ্যক্রমে আপনি আসল প্রোগ্রামগুলিতে কখনও এটি করেন না।
টন হসপেল

4

আর, 54 53 বাইট

cat(sprintf('
%*s',cumsum(c(30,sample(3,29,T)-2)),0))

উপরের মত একই ধারণা , তবে সংক্ষিপ্ত sprintfকোড এবং একটি স্বল্প অক্ষরের স্ট্রিং আক্ষরিক সাথে। \n(দুটি বাইট) এর পরিবর্তে আমি আক্ষরিক লাইন ব্রেক (একটি বাইট) ব্যবহার করছি।

Try it online!


A field width or precision (but not both) may be indicated by an asterisk *: in this case an argument specifies the desired number. আমি sprintfকয়েক বছর ধরে ব্যবহার করে আসছি এবং কোনওভাবে সবসময় এই অংশটি মিস করেছি ... অনুস্মারকটির জন্য ধন্যবাদ!
প্লানাপাস

1
দ্বিতীয় লাইনটি কখনও কখনও একের পরিবর্তে দুটি স্পেস যুক্ত হয়।
স্কট মিলনার

@ স্কটমিলনার এটি ঠিক করার জন্য কিছু সময় খুঁজে পেয়েছে।
কনরাড রুডল্ফ

4

রুবি , 45 39 বাইট

x=30
x.times{puts' '*(x+=rand(3)-1)+?S}

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

xলুপ চলাকালীন সংশোধন করা লুপের কাউন্টারকে প্রভাবিত করে না। আমি এসকে বিশেষত সাপের মতো আউটপুট চরিত্র হিসাবে বেছে নিয়েছি।

-6 বাইট: rand(3)-1পরিবর্তে ব্যবহার করুন [-1,0,1].sampleধন্যবাদ, এরিক ডুমিনিল !


x.mapপরিবর্তে দুটি বাইট সংরক্ষণ করতে পারেন x.times(সমান যেহেতু আপনি রিটার্ন মানটি ব্যবহার করেন না)
আরজেহান্টার

1
উফ, আপনি ঠিক বলেছেন, আমাকে উপেক্ষা করুন!
আরজেহান্টার

1
ঠিক আছে আমি একটি ভাল পেয়েছি: rand -1..1পাঁচ বাইট চেয়ে কম[-1,0,1].sample
আরজেহান্টার

1
@ আরজেহান্টার: বা rand(3)-16 বাইট কম জন্য।
এরিক ডুমিনাইল

1
(x=30).times{puts' '*x+?+;x+=rand(3)-1} (একই আকার) চ্যালেঞ্জের অনুরোধ অনুসারে সাপের মাথার জন্য ঠিক 30 টি জায়গা মুদ্রণ করবে
আসোন তুহিদ

4

সেনসটালক , 237 198 বাইট

এটি এমন এক ভাষা যা আমি প্রায় এক দশক আগে জানতে এবং ভালবাসতে পারি। এটি স্ক্রিপ্টিং ভাষা যা স্বয়ংক্রিয় পরীক্ষার সরঞ্জাম বেগুন কার্যকরী চালায় । আমি কিছু বছর কোম্পানিতে যোগদানের আগে বেশ কয়েক বছর ধরে এই সরঞ্জামটির আগ্রহী ব্যবহারকারী ছিলাম। এটি সর্বাধিক গল্ফ-সক্ষম ভাষা নয়, তবে এটি লিখতে আমার খুব আনন্দদায়ক মনে হয়েছে it ভাষাটি শব্দভাণ্ডার এবং ইংরেজি-ভাষা হিসাবে বোঝানো হওয়ায় এটিতে গল্ফ দেওয়া আসলেই বেশ চ্যালেঞ্জী ... এটি নামতে আমাকে বেশ খানিকটা সময় নিয়েছিল 237 বাইট।

set s to "                              +"&lf
set p to s
repeat 30
set a to random(0,2)
if a equals 0
delete first char of p
else if a equals 1
put " " before p
end if
put p after s
end repeat
put s

Ungolfed / ব্যাখ্যা

set the_snake to "                              +"&lf #assign the first line of the snake
set previous_line to the_snake                        #set up for the loop

repeat 30 times                                       #loop 30x
    set action to random(0,2)                         #random add/subtract/stay the same

    if action equals 0
        delete the first character of previous_line   #SenseTalk really shines at string manipulation
    else if action equals 1
        put " " before previous_line                  #insert a character at the beginning
    end if

    put previous_line after the_snake                 #plop the new segment into the string
end repeat                                            #close the loop

put the_snake                                         #print to standard out

সম্পাদনা: @ মুস্তাচেমেসকে ধন্যবাদ 36 বাইট সংরক্ষণ করা


1
হোয়াইটস্পেস প্রয়োজনীয়?
গোঁফ

আমি এর জন্য অনেক শ্রদ্ধা করেছি। বিশেষত 'গল্ফিং ভাষাগুলি' এর পটভূমির বিরুদ্ধে যা পুরোপুরি অপঠনযোগ্য, তবে সংক্ষিপ্ত বলে মনে হয়। আপনি আপনার ভাষাতে কী করতে পারেন তা কেবল উদাহরণ দিয়ে দেখানো খুব ভাল have
এজেফারাডে

1
শুভ কল @ মুস্তাচেমোস! আপডেট করা হয়েছে।
অ্যালেন ফিশার

আমি 198 বাইট গণনা করি (ভাল, ব্যবহারকারী স্ক্রিপ্টটি অনেকগুলি গণনা করে)
হাইপারনিউটারিনো

@ অ্যালেনফিশার এই ভাষাটির জন্য কি আপনার স্ট্যান্ডেলোন দোভাষী বা সংকলক আছে যা আমি বেগুন ডেমো না পেয়ে ব্যবহার করতে পারি?
গোঁফ মোসেস


3

শক্তির উৎস , 42 বাইট

1..($l=30)|%{" "*$l+"x";$l+=-1,0,1|Random}

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

থেকে loops 1জন্য $l=30। প্রতিটি পুনরাবৃত্তির আমরা করা $lশূণ্যস্থান প্লাস একটি xপাইপলাইন সম্মুখের একটি স্ট্রিং হিসাবে, তারপর +=পারেন এর -1, 0, 1ভিত্তি Get-Randomমধ্যে $lপরবর্তী লুপ জন্য। এই স্ট্রিংগুলি পাইপলাইন এবং একটি অন্তর্নিহিত থেকে সংগ্রহ করা হয়Write-Output আমাদের বিনামূল্যে একটি নতুন লাইনের দ্বারা পৃথক তালিকা দেয়।



3

জেলি , 18 বাইট

1ŒRX+
30ǒС⁶ẋ;€0Y

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

নির্বাচিত চরিত্রটি 0 হয় । যদি অক্ষরের তালিকার একটি তালিকা ফেরত দেওয়ার অনুমতি দেওয়া হয় তবে Yতা বাদ দেওয়া যেতে পারে এবং জমাটি 17 বাইটের জন্য নীলাদিক চেইনে পরিণত করা যেতে পারেবিকল্প

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

30Ç'С⁶ẋ; € 0Y | নীলাদিকের মূল লিঙ্ক।
30 | 30 থেকে শুরু হচ্ছে ...
  Ç'С | ... সহায়ক লিঙ্কটি 29 বার পুনরাবৃত্তি করুন এবং ফলাফলগুলিকে একটি তালিকায় সংগ্রহ করুন।
             | (এই তালিকায় প্রথম 30 টি অন্তর্ভুক্ত রয়েছে, সুতরাং সেখানে আসলে 30 টি সংখ্যা রয়েছে)।
      ⁶ẋ | তালিকার প্রতিটি আইটেমের জন্য অনেকবার এমন একটি জায়গা পুনরাবৃত্তি করুন।
        ; € 0 | প্রতিটি একটি 0 যুক্ত করুন।
           ওয়াই | এবং নতুন লাইনে যোগ দিন।
------------- + +
1ŒRX + | মোনাডিক সহায়ক লিঙ্ক। বিকল্পভাবে, আপনি µ এর পরিবর্তে µ1ŒRX + use ব্যবহার করতে পারেন Ç
1 | আক্ষরিক।
 Œআর | প্রতিসম range1 থেকে 1 পর্যন্ত সীমাবদ্ধ।
   এক্স + | এতে একটি এলোমেলো সংখ্যা চয়ন করুন এবং যুক্তিতে এটি যুক্ত করুন।

জেলি , 16 বাইট

আমার, এরিক এবং জোনাথনের সমাধানগুলির সংমিশ্রণে আমরা এটিকে 16 বাইটে নামতে পারি। মনোনীত চরিত্র 1

’r‘X
30ǒСṬ€o⁶Y

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

হেড-আপ (অন Ṭ€o⁶) করার জন্য জোনাথন অ্যালানকে ধন্যবাদ ।


আপনি আমার 18 বাইটারের মতো Ṭ€o⁶জায়গায় ব্যবহার করতে পারেন এবং ⁶ẋ;€017
জোনাথন অ্যালান

@ জোনাথান অ্যালান আপনাকে ধন্যবাদ! তিনটি জেলি উত্তরগুলির সংমিশ্রণে আমি আসলে 16 বাইট পেয়ে শেষ করেছি। তবে আমি পোস্টটি গৌণ সমাধান হিসাবে কারণ এটি সম্পূর্ণ আমার নয়। :-)
জনাব এক্সকোডার

3

অক্টাভা , 53 51 50 49 বাইট

printf('%*d\n',[a=31+cumsum(randi(3,1,30)-2);~a])

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

কোনও লুপিং না করে 1 বাইট সংরক্ষণ করা হয়েছে। অক্টাভের মতো অন্য একটি সংরক্ষণ করা হয়েছেprintf পাশাপাশি একটি সংরক্ষণ করা fprintf

এই নতুন কোডটি পরিসরে 30 টি এলোমেলো পূর্ণসংখ্যার অ্যারে তৈরি করে -1:1 । এরপরে এটি संचयीভাবে অ্যারের যোগফল দেয় এবং 30 যোগ করে, যা পছন্দসই ক্রম দেয়।

ফলটি ব্যবহার করে মুদ্রিত হয় fprintf বিন্যাসের যা বলে যে "একটি দশমিক সংখ্যা, নির্দিষ্ট প্রস্থকে প্যাড করা হবে, তার পরে একটি নতুন লাইন থাকবে The প্রস্থটি হবে প্রথম মান ইনপুট, এবং দশমিক সংখ্যাটি হবে দ্বিতীয় মান ইনপুট If মানগুলির ইনপুট এর চেয়ে বেশি, অষ্টাভ কাঙ্ক্ষিত আউটপুট পেতে স্বয়ংক্রিয়ভাবে মুদ্রণের পুনরাবৃত্তি করতে থাকবে।

এরপরে লুপিংটি অর্জন করার জন্য, আমাদের সিকোয়েন্স অ্যারেটির মধ্যে কেবল ইন্টারলিভ জিরো প্রয়োজন fprintf ফাংশনটি অনুক্রমের প্রতিটি মানকে প্রস্থ হিসাবে এবং প্রতিটি শূন্যকে অঙ্ক হিসাবে

একটি আউটপুট প্রিন্ট করে:

                              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

উপরের কোডটি সর্বদা প্রথম লাইনে ঠিক 30 টি স্পেস মুদ্রণ করে না। এটি 29, 30, বা 31 হয় হবে that এটি সংশোধন করতে আপনি এই 53 বাইট সংস্করণটি ব্যবহার করবেন:

x=31;for i=2:x;fprintf('%*d\n',x,0);x+=randi(3)-2;end

আপনি দুটি বাইট সংরক্ষণ করতে পারেন:x=31;for i=2:x;fprintf('%*d\n',x+=randi(3)-2,0);end
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন আমি সে সম্পর্কে ভেবেছিলাম, তবে এটি একই রকম হয় না। এটির ফলে প্রথম লাইনটি 29, 30 বা 31 স্পেস দিয়ে শুরু করবে।
টম কার্পেন্টার

1
@ কেভিন ক্রুজসেন বাস্তবে কিছু মনে করবেন না। আমি মাত্র ওপিএসের মন্তব্যগুলিকে লক্ষ্য করেছি যে এটি অনুমোদিত।
টম কার্পেন্টার

হাঁ। এটি কিছুটা বিরক্তিকর একটি মন্তব্য মন্তব্যে রয়েছে (বিশেষত যেহেতু এটি বর্তমান চ্যালেঞ্জের বর্ণনার সাথে বিরোধিতা করে)। আমি ওপিকে 29, 30 বা 31 দিয়ে শুরু করতে পারেন প্রতিফলিত করার চ্যালেঞ্জ সম্পাদনা করতে বলেছি, যেহেতু মন্তব্যগুলিতে তিনি এটিকে অনুমতি দিয়েছেন বলে মনে হচ্ছে।
কেভিন ক্রুইজসেন

3

অ্যাপ্লিকেশন Lua, 81 75 বাইট

n=30;for i=1,n do print(("%-"..n.."s+"):format(" "))n=n-2+math.random(3)end

ইন to_exp শুধুমাত্র লুপ প্রবেশের আগে একবার মূল্যায়ন করা হয়, এক বাইট সংরক্ষণ।for i=1,n ... n

-6 @20202929- কে ধন্যবাদ

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


1
পিপিসিজিতে আপনাকে স্বাগতম! আপনি আপনার পোস্টে একটি টিআইও লিঙ্ক যুক্ত করতে চাইতে পারেন যাতে লোকেরা আপনার প্রোগ্রামটি আরও সহজে পরীক্ষা করতে পারে।
ব্যবহারকারী 202729

আপনি আপনার উত্তরটি 76 বাইটে গল্ফ করতে পারেন । পৃষ্ঠার পাশাপাশি লুয়ায় গল্ফ করার টিপস কার্যকর হতে পারে।
ব্যবহারকারী 202729


3

পাইথন 3.6 , 84 73 69 বাইট

from random import*
x=30
exec("print(' '*x+'+');x+=randint(-1,1);"*x)

-11 বাইটের জন্য @ ওয়েট উইজার্ডকে ধন্যবাদ। -জোকিংকে -4 বাইটের জন্য ধন্যবাদ


যেহেতু আপনি ব্যবহার শেষ করেন না iআপনি for i in[1]*30বাইটগুলি সংরক্ষণ করার পরিবর্তে ব্যবহার করতে পারেন ।
গম উইজার্ড

আপনি from random import*যাতে random.পরবর্তী সময়ে প্রয়োজন না হয় তাও করতে পারেন । এবং আপনি নিজের পরে নতুন লাইনের স্থান সরাতে পারেন :
গম উইজার্ড

এবং যদি আপনি পরিবর্তন 30করতে দিয়ে প্রতিস্থাপিত হতে পারে । 29"+".rjust(x)" "*x+"+"
গম উইজার্ড

প্রকৃতপক্ষে আমার শেষ মন্তব্যের বিষয়ে এটি 30 টি ফাঁকা হওয়া উচিত 29 না Your এটি 30 থেকে 31 পরিবর্তন করে স্থির করা যেতে পারে
গম উইজার্ড

1
@ উইট উইজার্ড ধন্যবাদ! আমি আপনার পরিবর্তনগুলি যুক্ত করেছি এবং আপনাকে জমাও দিয়েছি। আমি পরিবর্তন [1]*30করতে [1]*xহয়েছে কারণ এটি এক বাইট খাটো করে।
গোঁফ মোজেস

3

ES5, 97 95 81 বাইট

for(p=i=30;i--;)console.log(Array(p).join(" ",r=Math.random()*3|0,p+=r>1?-1:r)+0)

ES5, 112ফাংশন বিন্যাসের প্রয়োজন হলে 98 বাইট :

function a(){for(p=i=30;i--;)console.log(Array(p).join(" ",r=Math.random()*3|0,p+=r>1?-1:r)+0)}a()


2
পিপিসিজিতে আপনাকে স্বাগতম! আমি মনে করি কোনও ফাংশনের অভ্যন্তরে আপনার ভেরিয়েবলগুলি ঘোষণা করতে হবে -_=>{p=30;for(i=0;i<p;i++){console.log(Array(p).join(" ")+"+\n");r=~~(Math.random()*3);p+=r==2?-1:r}}
অলিভার

এটি বাইটগুলি মেরে ফেলবে, আমি আপনাকে এটি বলব। ES5 ডিফল্টভাবে তীর ফাংশন অন্তর্ভুক্ত করে না। আমি আপডেট করব
কাইল ফেয়ারেন্স

@ অলিভার, ফাংশন ফর্ম্যাট যুক্ত করা হয়েছে :)
কাইল ফেয়ারেন

নিস! কখন এটি চালু হয়েছিল তা সম্পর্কে আমি নিশ্চিত নই, তবে আমি মনে করি আপনি এর join(" ")সাথে প্রতিস্থাপন করতে পারবেনjoin` `
অলিভার

@ অলিভার আমি নিশ্চিত নই আপনি ES5 এ এটি করতে পারতেন, আপনি কি পারবেন? আমি ভেবেছিলাম যে এটি কোনও টেম্পলেটটি ES6-এ যুক্ত হয়েছিল?
কাইল ফেয়ারেন্স

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