আমাকে একটি স্মরণ কর!


19

আমাকে একটি স্মরণ কর! আমি আপনাকে প্রস্থ, গ্রাহাম ক্র্যাকারের পরিমাণ, চকোলেট পরিমাণ, এবং মার্শমেলো পরিমাণ বলি। একটি উদাহরণ:

ইনপুট:

প্রস্থ: 10 গ্রাহাম: 3 চকলেট: 2 Marshmallow এ: 1

আউটপুট:

GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
CCCCCCCCCC
CCCCCCCCCC
MMMMMMMMMM
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG

এটা কি এত সহজ? হুম।

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

আপনি আগ্রহী হলে সম্পূর্ণ পরীক্ষার কেস।

স্ট্যাক স্নিপেট (পরীক্ষার জন্য, ইত্যাদি)

এটি আউটপুট পরীক্ষা করার জন্য।

var smore = function(width, graham, chocolate, marshmallow){
	return ("G".repeat(width) + "\n").repeat(graham) + 
	("C".repeat(width) + "\n").repeat(chocolate) + 
	("M".repeat(width) + "\n").repeat(marshmallow) + 
	("G".repeat(width) + "\n").repeat(graham);
};
Snippetify(smore);
<script src="https://programmer5000.com/snippetify.min.js"></script>
Width: <input type = "number">
Graham: <input type = "number">
Chocolate: <input type = "number">
Marshmallow: <input type = "number">
<button>Try it out!</button>
<pre data-output></pre>

মন্তব্য:

  • আপনি শেষ লাইনের শেষের দিকে একটি চলন্ত নিউলাইন অন্তর্ভুক্ত করতে পারেন। আপনি \একটি নতুন লাইনের পরিবর্তে একটিও ব্যবহার করতে পারেন ।
  • এটি
  • কোন প্রশ্ন? নিচে মন্তব্য করুন:

21
আমি আপনার লেট মি গুগল দ্যাট ফর ফর লিঙ্কটি সম্পাদনা করেছি। এটা সত্যিই মজার ছিল না।
স্তর নদী সেন্ট

1
@ ফিলিপনার্দিবাটিস্টা হ্যাঁ
programmer5000

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

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

4
@ প্রোগ্রামার ৫০০০ কিন্তু কেন? যদি তারা হ্রাস পেয়ে থাকে তবে এটি 90% সম্ভবত কারণ তারা মনে করে যে এটি বিরক্তিকর এবং তুচ্ছ চ্যালেঞ্জ। তদ্ব্যতীত, লোকেদের ব্যাখ্যা বা প্রত্যাহার করতে বলা বেশ অভদ্র। কোনও মন্তব্য না করে তাদের ডাউনভোট করার অধিকার রয়েছে।
আর

উত্তর:


2

জেলি , 11 বাইট

ṁ4“GCMG”x×Y

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

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

ṁ4“GCMG”x×Y  Main link. Left argument: g, c, m. Right argument: w

ṁ4           Mold 4; repeat g, c, m until length 4 is reached. Yields [g, c, m, g].
  “GCMG”x    Repeat 'G' g times, then 'C' c times, then 'M' m times, and finally
             'G' g times. This yields a string.
         ×   Multiply each character w times. This is essentially a bug, but
             Jelly's × behaves like Python's * (and vectorizes), so it can be
             abused for character repetition.
          Y  Join, separating by linefeeds.


8

05 এ বি 1 ই , 21 19 19 বাইট

"GCMG"S×|D«‚øvy`.D»

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

-2 আমার তদারকি এবং Emigna ধন্যবাদ।

"GCMG"S×            # Push GCMG, separate, duplicate n times.
        |D«         # Push rest of inputs, doubled.
           ‚ø       # Wrap GCMG array and input array, then zip them into pairs.
             vy`.D» # For each pair, print n of G/C/M/G.

(এমিগানার উত্তর দেখুন, এটি আরও ভাল: /codegolf//a/116787/59376 )


1
মনে হচ্ছে আপনি দুর্ঘটনাক্রমে ©সেখানে একটি রেখে গেছেন ।
এমিগিনা

1
এছাড়াও আপনি প্রতিস্থাপন করতে পারে ¬¸সঙ্গে Dযেমন অতিরিক্ত উপাদান হারিয়ে যায় যখন আপনি zip।
এমিগনা

@ এমিগনা আমি উভয়ই সেই কার্যকারিতাটি পছন্দ করি এবং ঘৃণা করি।
ম্যাজিক অক্টোপাস উরন

হ্যাঁ, এটি প্রায়শই খুব বিরক্তিকর তবে এখন এবং পরে (এখনকার মতো) এটি দরকারী হয়ে যায় :)
এমিগানা

8

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

(W,G,C,M)=>[...'GCMG'].map(X=>`${X.repeat(W)}
`.repeat(eval(X))).join``

ওহু, আরও 3 টি জাভাস্ক্রিপ্ট উত্তর বীট!


খুব সুন্দর, আমার ভোট পেয়েছে।
শেগি

7

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

'GCMG'iK:)Y"!liX"

ইনপুট ফর্ম্যাটটি হ'ল: প্রথম ইনপুট [G, C, M], দ্বিতীয় ইনপুট W

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

উদাহরণ সহ ব্যাখ্যা

ইনপুট [3 2 1] এবং বিবেচনা করুন 10

'GCMG' % Push this string
       % STACK: 'GCMG'
i      % Take first input: array of three numbers
       % STACK: 'GCMG', [3 2 1]
K:     % Push [1 2 3 4]
       % STACK: 'GCMG', [3 2 1], [1 2 3 4]
)      % Index (modular, 1-based). This repeats the first entry of the input array
       % STACK: 'GCMG', [3 2 1 3]
Y"     % Run-length decoding
       % STACK: 'GGGCCMGGG'
!      % Transpose. Gives a column vector of chars
       % STACK: ['G'; 'G'; 'G'; 'C'; 'C'; 'M'; 'G'; 'G'; 'G']
l      % Push 1
       % STACK: ['G'; 'G'; 'G'; 'C'; 'C'; 'M'; 'G'; 'G'; 'G'], 1
i      % Take second input: number
       % STACK: ['G'; 'G'; 'G'; 'C'; 'C'; 'M'; 'G'; 'G'; 'G'], 1, 10
X"     % Repeat the specified numbers of times along first and second dimensions
       % STACK: ['GGGGGGGGGG';'GGGGGGGGGG';'GGGGGGGGGG';'CCCCCCCCCC';...;'GGGGGGGGGG']
       % Implicitly display

7

সি # , 204 বাইট


Golfed

(w,g,c,m)=>{string G="\n".PadLeft(++w,'G'),C="\n".PadLeft(w,'C'),M="\n".PadLeft(w,'M'),o="".PadLeft(g,'G');o+="".PadLeft(m,'M')+"".PadLeft(c,'C')+o;return o.Replace("G",G).Replace("C",C).Replace("M",M);};

Ungolfed

( w, g, c, m ) => {
   string
      G = "\n".PadLeft( ++w, 'G' ),
      C = "\n".PadLeft( w, 'C' ),
      M = "\n".PadLeft( w, 'M' ),
      o = "".PadLeft( g, 'G' );

   o +=
      "".PadLeft( m, 'M' ) +
      "".PadLeft( c, 'C' ) +
      o;

   return o
      .Replace( "G", G )
      .Replace( "C", C )
      .Replace( "M", M );
};

অসম্পূর্ণ পাঠযোগ্য

// Function with 4 parameters
//   w : Width
//   g : Graham
//   c : Chocolate
//   m : Marshmallow
( w, g, c, m ) => {

   // Initialization of vars with the contents
   //    of each line, with a new line at the end
   string
      G = "\n".PadLeft( ++w, 'G' ),
      C = "\n".PadLeft( w, 'C' ),
      M = "\n".PadLeft( w, 'M' ),

      // Trick to reduce the byte count
      //   Initialize the output with n 'G's
      o = "".PadLeft( g, 'G' );

   // Add again n 'M's and n 'C's
   //   Append the 'G's at the end.
   o +=
      "".PadLeft( m, 'M' ) +
      "".PadLeft( c, 'C' ) +
      o;

   // Replce every instance of 'G'/'C'/'M'
   //    with the full line
   return o
      .Replace( "G", G )
      .Replace( "C", C )
      .Replace( "M", M );
};

সম্পূর্ণ কোড

using System;
using System.Collections.Generic;

namespace Namespace {
   class Program {
      static void Main( String[] args ) {
         Func<Int32, Int32, Int32, Int32, String> f = ( w, g, c, m ) => {
            string
               G = "\n".PadLeft( ++w, 'G' ),
               C = "\n".PadLeft( w, 'C' ),
               M = "\n".PadLeft( w, 'M' ),
               o = "".PadLeft( g, 'G' );

            o +=
               "".PadLeft( m, 'M' ) +
               "".PadLeft( c, 'C' ) +
               o;

            return o
               .Replace( "G", G )
               .Replace( "C", C )
               .Replace( "M", M );
         };

         List<Tuple<Int32, Int32, Int32, Int32>>
            testCases = new List<Tuple<Int32, Int32, Int32, Int32>>() {
               new Tuple<Int32, Int32, Int32, Int32>( 1, 1, 1, 1 ),
               new Tuple<Int32, Int32, Int32, Int32>( 1, 1, 1, 2 ),
               new Tuple<Int32, Int32, Int32, Int32>( 1, 1, 2, 1 ),
               //
               // ...
               //
               // The link above contains the code ready to run
               //    and with every test from the pastebin link
               //
               // Yes, it contains 342 tests ready to run.
               //
               // I can barely fit every test on a 1080p screen...
               //    ... and there's 6 tests per line... Jebus...
               //
            };

         foreach( var testCase in testCases ) {
            Console.WriteLine( $"Input:\nWidth: {testCase.Item1,3} Graham: {testCase.Item2,3} Chocolate: {testCase.Item3,3} Marshmellow: {testCase.Item4,3}\nOutput:\n{f( testCase.Item1, testCase.Item2, testCase.Item3, testCase.Item4 )}\n" );
         }

         Console.ReadLine();
      }
   }
}

রিলিজ

  • v1.0 - 204 bytes- প্রাথমিক সমাধান।

মন্তব্য


প্রশংসা! : ডি
অহুমান

7

05 এ বি 1 ই , 17 ই 16 বাইট

কারুস্কোমপুটিংয়ের জন্য 1 বাইট সংরক্ষণ করা হয়েছে

"GCMG"S×vy²Nè.D»

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

ইনপুট অর্ডার হয় W, [G,C,M]

ব্যাখ্যা

10, [3,2,1] উদাহরণ হিসাবে ব্যবহৃত।

"GCMG"S           # push the list ['G','C','M','G']
       ×          # repeat each W times
                  # STACK: ['GGGGGGGGGG', 'CCCCCCCCCC', 'MMMMMMMMMM', 'GGGGGGGGGG']
        v         # for each [string, index] y,N in the list
          ²Nè     # get the amount of layers at index N from the [G,C,M] list
         y   .D   # duplicate the string y that many times
               »  # join strings by newlines

1
"GCMG"S×vy²Nè.D»আশ্চর্য-যমজ শক্তি, সক্রিয়! ফর্ম, 05AB1E কোড! এছাড়াও, আর্গুমেন্ট আনা পেতে, কিন্তু এটি এখনও 16 এর
ম্যাজিক অক্টোপাস ভস্মাধার

@ কারাসোকম্পিউটিং: স্ট্যাকের মধ্যে অপরিচ্ছন্ন ছাঁটাই না ফেলে এর সুবিধা রয়েছে তবে এটি আমার কাছে একইভাবে অপ্রতিরোধ্য বলে মনে হয়।
এমিগানা

1
এটি এখনও 1 বাইট কম এবং এটি এমএটিএল এর সাথে আপনার টাইকে পরাজিত করবে;)।
ম্যাজিক অক্টোপাস উরন

@ কারাসোকম্পিউটিং: ওহ, কখন তা ঘটেছিল? আমি নিশ্চিত যে এটি 17 বছর ছিল। নিস! ;)
এমিলিগা

আমি প্রায়শই বোকা জিনিস পোস্ট করি এবং আমি বোকা হয়েছি বুঝতে পেরে 1 মিনিটের পরে এটিকে সম্পাদনা করি।
ম্যাজিক অক্টোপাস উরন

6

রুবি, 47 বাইট

->w,g,c,m{puts r=[?G*w]*g,[?C*w]*c,[?M*w]*m,r}

ভেন্টোরোকে ধন্যবাদ

রুবি, 51 বাইট

->w,g,c,m{(?G*g+?C*c+?M*m+?G*g).chars{|i|puts i*w}}

এভাবে কল করুন:

f=->w,g,c,m{(?G*g+?C*c+?M*m+?G*g).chars{|i|puts i*w}}

f[10,3,2,1]

->w,g,c,m{puts r=[?G*w]*g,[?C*w]*c,[?M*w]*m,r}কিছুটা খাটো
ভেন্টোরো

5

পাওয়ারশেল , 49 বাইট

$a,$b=$args;0..2+0|%{,("$('GCM'[$_])"*$a)*$b[$_]}

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

চারটি কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়, width graham chocolate marshmallow , প্রথমটিতে $aএবং বাকিগুলিকে $b(নিখরচায় অ্যারে হিসাবে) সংরক্ষণ করে। সীমার উপরের লুপগুলি 0,1,2,0। প্রতিটি লুপ, আমরা স্ট্রিংকে সূচক করি, স্ট্রিং হিসাবে GCMপুনরায় কাস্ট করি charএবং এটিকে $a(প্রস্থ) দ্বারা গুণিত করি এবং কমা-অপারেটর ব্যবহার ,করে যথাযথ সূচককে $b(যেমন কতগুলি হয় ) দ্বারা গুণিত করে এটিকে অ্যারে রূপান্তরিত করে স্তর)। এই ফলস্বরূপ স্ট্রিং অ্যারেগুলি সমস্ত পাইপলাইনে রেখে যায় এবং উপাদানগুলির মধ্যে একটি নতুন লাইন সহ আউটপুট অন্তর্ভুক্ত থাকে।


5

সি, 108 105 বাইট

3 বাইট সংরক্ষণের জন্য কুইন্টিনকে ধন্যবাদ!

#define F(i,c)for(;i--;puts(""))for(j=w;j--;)putchar(c);
i,j;f(w,g,c,m){i=g;F(i,71)F(c,67)F(m,77)F(g,71)}

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


1
#define F(i,c)for(;i--;puts(""))for(j=w;j--;)putchar(c);তিনটি বাইট সংরক্ষণ করে :)
কোয়ান্টিন

@ কুইন্টিন ধন্যবাদ! আমি অবাক হয়েছি কেন আমি প্রথম স্থানে এটি মিস করেছি :)
স্টেডিবক্স

4

ব্যাচ, 146 বাইট

@set s=
@for /l %%i in (1,1,%1)do @call set s=G%%s%%
@for %%w in (%2.%s% %3.%s:G=C% %4.%s:G=M% %2.%s%)do @for /l %%i in (1,1,%%~nw)do @echo%%~xw

এর অস্পষ্ট আচরণের উপর নির্ভর করে echoযে এটি প্রায়শই এবং চারপাশের লুপগুলিকে echoএকটি নেস্টেড লুপে ভেঙে ফেলার জন্য প্রতিধ্বনিত করা এবং পাঠ্যটিকে উপেক্ষা করতে পারে।


4

ভি , 22 বাইট

éGÄÀäjMoC
MÀÄkÀÄHdêÀP

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

Hexdump:

00000000: e947 c4c0 e46a 4d6f 430a 4d1b c0c4 6bc0  .G...jMoC.M...k.
00000010: c448 64ea c050                           .Hd..P

ইনপুট অর্ডার হয়

Graham, Marshmallow, Chocolate, Width

ব্যাখ্যা:

éG                  " Insert 'G'
  Ä                 " Duplicate this line
   Àäj              " *arg1* times, duplicate this line and the line below it
      M             " Move to the middle line
       o            " Open up a newline, and enter insert mode
        C<cr>M<esc> " Insert 'C\nM'
ÀÄ                  " Make *arg2* copies of this line (Marshmallow)
  k                 " Move up one line
   ÀÄ               " Make *arg3* copies of this line (Chocolate)
     H              " Move to the first line
      dê            " Delete this column
        ÀP          " And paste it horizontally *arg4* times

আপনি একটি ব্যাখ্যা যোগ করতে পারেন?
programmer5000

@ প্রোগ্রামার ৫০০০ অবশ্যই! আমার সম্পাদনা দেখুন
ডিজেএমসিএমহেম

4

এক্সেল, 104 বাইট

ওহ, ছেলে! এমন একটি সূত্র যা লাইন ব্রেকগুলির প্রয়োজন।

=REPT(REPT("G",A1)&"
",A2)&REPT(REPT("C",A1)&"
",A3)&REPT(REPT("M",A1)&"
",A4)&REPT(REPT("G",A1)&"
",A2)

A1প্রস্থ হয়েছে
A2গ্রাহাম হয়েছে
A3চকলেট হয়েছে
A4উদ্ভিদবিশেষ হয়েছে


যদি প্রাক-ফর্ম্যাটিংয়ের অনুমতি দেওয়া হয়, তবে আপনি উল্লম্ব পাঠ্যের জন্য ঘরটি ফর্ম্যাট করতে পারেন এবং সূত্রটি 65 বাইটে সংক্ষিপ্ত করতে পারেন:

=REPT(REPT("G",A2)&REPT("C",A3)&REPT("M",A4)&REPT("G",A2)&"
",A1)

4

জেলি , 13 বাইট

“GCM”ẋ"ṁ4Fẋ€Y

একটি dyadic প্রোগ্রাম। ইনপুট আছেন: [Graham's, Chocolates, Marshmallows], Width

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

কিভাবে?

“GCM”ẋ"ṁ4Fẋ€Y - Main link: [g,c,m], w    e.g. [1,2,1], 2
“GCM”         - literal ['G', 'C', 'M']
      "       - zip that and [g,c,m] with the dyadic operation:
     ẋ        -     repeat list               [['G'],['C','C'],['M']]
       ṁ4     - mould like [1,2,3,4]          [['G'],['C','C'],['M'],['G']]
         F    - flatten                       ['G','C','C','M','G']
          ẋ€  - repeat €ach w times           [['G','G'],['C','C'],['C','C'],['M','M'],['G','G']]
            Y - join with line feeds          ['G','G','\n','C','C','\n','C','C','\n','M','M','\n','G','G']
              - implicit print                GG
                                              CC
                                              CC
                                              MM
                                              GG

3

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

for($m=$argv;$i++<4;)for($c=$m[_2342[$i]]*$m[1];$c;)echo$c--%$m[1]?"":"\n",_GCMG[$i];

অথবা

for($m=$argv;$i++<4;)for($c=$m[_2342[$i]];$c--;)echo"\n".str_pad("",$m[1],_GCMG[$i]);

অনলাইন সংস্করণ

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

<?[$n,$w,$G,$C,$M]=$argv;for(;$i<4;$i++)for($t=${"$n[$i]"};$t--;)echo"\n".str_pad("",$w,$n[$i]);

অনলাইন সংস্করণ

সম্প্রসারিত

[$n,$w,$G,$C,$M]=$argv; # $argv[0] must contain a file beginning with "GCMG"
for(;$i<4;$i++) # Take the first 4 values of the filename
for($t=${"$n[$i]"};$t--;) # How many rows should be printed
echo"\n".str_pad("",$w,$n[$i]); # print $w times the actual letter

3

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

কোড:

…GCM‚øü׬)˜S×»

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

ব্যাখ্যা:

…GCM              # Push the string "GCM"
    ‚             # Wrap with the input
     ø            # Transpose the array
      ü×          # Compute the string product of each element (['A', 3] --> 'AAA')
        ¬)˜       # Get the last element and append to the list
           S      # Split the list
            ×     # Vectorized string multiplication with the second input
             »    # Join by newlines and implicitly print

3

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

(সম্পাদনা করুন: এখন ম্যাট্রিকগুলি অনুমোদিত, এতে নতুন লাইনে যোগ দেওয়ার দরকার নেই no)

def s(w,g,c,m):g=['G'*w]*g;print g+['C'*w]*c+['M'*w]*m+g

3

সি # (150 বাইট)

void S(int w,int g,int c,int m){P(w,g,'G');P(w,c,'C');P(w,m,'M');P(w,g,'G');}void P(int w,int i,char c){while(i-->0)Console.Write("\n".PadLeft(w,c));}

Ungolfed:

void SMores(int w, int g, int c, int m)
{
    Print(w,g,'G');
    Print(w,c,'C');
    Print(w,m,'M');
    Print(w,g,'G');
}
void Print(int w, int i, char c)
{
    while(i-->0)
        Console.Write("\n".PadLeft(w,c));
}

3

জাভা, 138 বাইট

String s(int w,int g,int c,int m){String b="";int i=-g-c,j;for(;i++<g+m;){for(j=0;j++<w;)b+=i<=-c|i>m?'G':i<=0?'C':'M';b+="\n";}return b;}

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

ব্যাখ্যা:

String s(int w, int g, int c, int m) {
    String b = "";
    int i = -g - c, j;              // i is the layer
    for (; i++ < g + m;) {          // Repeat (G+C+M+G) times, starting from -g-c to m+g 
                                    //Layer 0 is the last chocolate layer

        for (j = 0; j++ < w;) {     // Repeat W times
            b += 
                i <= -c | i > m ? 'G': //If before the chocolate or after the marshmellow, output a G
                i <= 0 ? 'C' :      // Else if equal or before last chocolate layer output C
                'M';                //Otherwise output an M
        }
        b += "\n";
    }
    return b;
}


3

সুইফ্ট, 138 137 134 130 বাইট

@ কেভিনকে ধন্যবাদ 7 বাইট সংরক্ষণ করা হয়েছে

let f=String.init(repeating:count:)
let r={w,g,c,m in f(f("G",w)+"\n",g)+f(f("C",w)+"\n",c)+f(f("M",w)+"\n",m)+f(f("G",w)+"\n",g)}

দুটি ফাংশন যা প্রত্যাশিত মানটি ফেরত দেয়: fএকটি সহায়ক ফাংশন এবং rআউটপুট উত্পন্ন করে এমন আসল লামদ্বার মত ফাংশন। ব্যবহার: print(r(10,3,2,1))

এটা দেখ!


স্ট্রিং ইনিশিয়ালাইজার সরাসরি ( var f=String.init(repeating:count:);) সরাসরি উল্লেখ করে আপনি বেশ কয়েকটি অক্ষর সংরক্ষণ করতে পারেন । এবং এটি আপনাকে কোনও অক্ষর বাঁচায় না তবে এটির জন্য কোনও খরচ হয় না কারণ এগুলি উভয়ই সত্যই হওয়া উচিত let
কেভিন

r( let r={f(f("G",$0)+"\n",$1)+f(f("C",$0)+"\n",$2)+f(f("M",$0)+"\n",$3)+f(f("G",$0)+"\n",$1)})
কেভিন

@ কেভিন ধন্যবাদ, আমার ধারণা ছিল না যে আপনি এই জাতীয় f=String.init(repeating:count:)
কোনওটির

@ কেভিন যখন আপনার দ্বিতীয় পরামর্শটি আসে তখন মনে হয় এটি ইউটিএফ -8-তে বাইট সংখ্যা ছাড়িয়ে গেছে, টিআইও-তে বাইট গণনা পরীক্ষা করেছে, কেন জানি না
মিঃ এক্সকোডার


2

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

ট্রেলিং নিউলাইন অন্তর্ভুক্ত।

f=

(w,g,c,m)=>(b=(`G`[r=`repeat`](w)+`
`)[r](g))+(`C`[r](w)+`
`)[r](c)+(`M`[r](w)+`
`)[r](m)+b

console.log(f(10,3,2,1))


2

জেএস (ইএস 6), 87 বাইট

x=(w,g,c,m)=>(f=>f`Gg`+f`Cc`+f`Mm`+f`Gg`)(([[x,y]])=>(x.repeat(w)+`
`).repeat(eval(y)))

xস্বতন্ত্র ল্যাম্বদা ফাংশন হিসাবে কাজ করে। ফলাফলটি একটি পেছনের নতুন লাইন রয়েছে has

একটি স্নিপেট চেষ্টা করুন:


2

সি, 90 বাইট ( স্টেডিবক্সের উত্তরের ভিত্তিতে )

ভেরিয়েবলগুলির নাম পরিবর্তন করে ম্যাক্রো পরামিতিগুলিকে কাটাতে স্ট্রিংফিকেশন প্রিপ্রোসেসর অপারেটরটি ব্যবহার করে ited আমি আশা করি যে এই ধারণাটির নিজস্ব উত্তরটি যথাযথ হিসাবে পোস্ট করা হয়েছে :)

#define F(x)for(i=x;i--;puts(""))for(j=w;j--;)printf(#x);
i,j;f(w,G,C,M){F(G)F(C)F(M)F(G)}

টিআইও লিঙ্ক


উত্সাহ দিতে হবে, তবে ভোটের সীমাটি চাপবে :(
প্রোগ্রামার

2

এফ # ( 148 99 বাইট)

let s w q="GCMG"|>Seq.iteri(fun i c->for j in 1..(q|>Seq.item(i%3))do printf"%A"("".PadLeft(w,c)))

ব্যবহার:

s 10 [2;3;4]

Ungolfed:

let smores width quantities =
    "GCMG"
    |>Seq.iteri(fun i char ->
        for j in 1..(quantities|>Seq.nth(i%3))
            do printf "%A" ("".PadLeft(width,char))) 

আমি এখনও এফ # তে নতুন, তাই আমি যদি অদ্ভুত বা বোকা কিছু করি তবে দয়া করে আমাকে জানান।


এফ # এর একটি লিঙ্ক সুন্দর হবে।
programmer5000

2

জাভাস্ক্রিপ্ট ES6, 69 68 66 বাইট

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

a=>b=>"GCMG".replace(/./g,(c,i)=>`${c.repeat(a)}
`.repeat(b[i%3]))

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

ব্যাখ্যা

ক্রেডিড ফর্ম্যাটে ইনপুট গ্রহণ করে (Width)([Graham,Chocolate,Marshmallow])

ব্যবহার .replace(/./g,...)করে স্ট্রিংয়ের প্রতিটি অক্ষরকে GCMGফাংশন থেকে ফেরত মান দিয়ে প্রতিস্থাপন করে(c,i)=>`${c.repeat(a)} `.repeat(b[i%3])

`${c.repeat(a)} `একটি নতুন লাইন সংযুক্ত করে গ্রাহাম ক্র্যাকারের প্রতিটি লাইন তৈরি করে .repeat(b[i%3])এই লাইনটি প্রয়োজনীয় সংখ্যার পুনরাবৃত্তি করে


ব্যবহার replace()করে একটি বাইট সংরক্ষণ করতে পারে:a=>"GCMG".replace(/./g,(c,i)=>`${c.repeat(a[0])}\n`.repeat(a[1+i%3]))
Arnauld

1

জেএস (ইএস 6), 111 বাইট

n=`
`,G="G",C="C",M="M",r=(s,t)=>s.repeat(t),(w,g,c,m)=>r(r(G,w)+n,g)+r(r(C,w)+n,c)+r(r(M,w)+n,m)+r(r(G,w)+n,g)

1

গাণিতিক ১০২ বাইট (১০০ টি অক্ষর)

শুনেছেন বিল্ট-ইন ভোম 12 অবধি প্রকাশিত হচ্ছে না।

s=StringRepeat;StringReplace[s@@@({Characters@"GCMG",#/.#[[4]]->#[[1]]})<>"",x_:>x~s~#[[4]]<>"\n"]&

প্রথমে একটি কলাম তৈরির ধারণাটি ব্যবহার করে খুব সোজা। দীর্ঘ ফাংশন নামগুলি 35 বাইট নষ্ট করে। একটি বাক্সের মতো প্রতীকটি আসলে একটি ট্রান্সপোজ চরিত্র এবং গাণিতিকায় ঠিকঠাক করে দেবে।

ব্যবহার: %@{Graham, Chocolate, Marshmallows, Width} যেমন %@{3, 2, 1, 11}


1

জাভা 7, 226 বাইট

String c(int w,int g,int c,int m){return x(w,'G',g)+x(w,'C',c)+x(w,'M',m)+x(w,'G',g);}String x(int w,char c,int x){String r="";for(;x-->0;r+=x(w,c));return r;}String x(int w,char c){String r="";for(;w-->0;r+=c);return r+"\n";}

বা ( 226 বাইট ):

String c(int w,int g,int c,int m){return x(w,71,g)+x(w,67,c)+x(w,77,m)+x(w,71,g);}String x(int...a){String r="";for(;a[2]-->0;r+=x(a[0],(char)a[1]));return r;}String x(int w,char c){String r="";for(;w-->0;r+=c);return r+"\n";}

ব্যাখ্যা:

String c(int w,int g,int c,int m){  // Main method with four integer parameters and String return-type
  return x(w,'G',g)                 //  Return all Graham-rows
        +x(w,'C',c)                 //   plus all Chocolate-rows
        +x(w,'M',m)                 //   Plus all Marshmallon-rows
        +x(w,'G',g);                //   Plus all Graham-rows again
}                                   // End of main method

String x(int w,char c,int x){       // Separate method (1) with two integers & character parameters and String return-type
  String r="";                      //  Result-String
  for(;x-->0;                       //  For the given amount of rows of a certain type
             r+=x(w,c)              //   Append the result-String with a row of the given character
  );                                //  End of for-loop (implicit / no body)
  return r;                         //  Return the result-String
}                                   // End of separate method (1)

String x(int w,char c){             // Separate method (2) with integer and character parameters and String return-type
  String r="";                      //  Result-String
  for(;w-->0;                       //  For the amount given as width
             r+=c                   //   Append the character to the row
  );                                //  End of for-loop (implicit / no body)
  return r+"\n";                    //  Return the result-String including a new-line
}                                   // End of separate method (2)

পরীক্ষার কোড:

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

class M{
  String c(int w,int g,int c,int m){return x(w,'G',g)+x(w,'C',c)+x(w,'M',m)+x(w,'G',g);}String x(int w,char c,int x){String r="";for(;x-->0;r+=x(w,c));return r;}String x(int w,char c){String r="";for(;w-->0;r+=c);return r+"\n";}

  public static void main(String[] a){
    System.out.print(new M().c(10,3,2,1));
  }
}

আউটপুট:

GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
CCCCCCCCCC
CCCCCCCCCC
MMMMMMMMMM
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG

1
খারাপ না ... জাভা!
programmer5000

1
@ প্রোগ্রামার ৫০০০ হেই, ধন্যবাদ! আমি জাভা 7 (এবং কখনও কখনও 8) এ গল্ফ পছন্দ করি, যদিও আমি মনে করি না যে এটি কখনও অন্য উত্তরগুলির সাথেও প্রতিযোগিতা করবে .. কেবলমাত্র জাভা উত্তরের সাথে 'কিছুটা প্রতিদ্বন্দ্বিতা' হয়েছিল এই 8 বাইট উত্তর এবং এই 19 বাইট উত্তর , আসলে প্রথমবার পাইথনকে ছাড়িয়ে গেছে। ; পি যদিও তাদের 1 বা 2 বাইট সাবমিশন সহ গল্ফিং ভাষা এখনও অবশ্যই ধূলিকণায় জাভা ছেড়ে দেয় leave
কেভিন ক্রুইজসেন 14

1

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

import Data.List
(#)=replicate
f w g c m=intercalate"\n"$map(w#)$g#'G'++c#'C'++m#'M'++g#'G'

বেশ স্ব-ব্যাখ্যামূলক হওয়া উচিত। যেহেতু একটি মন্তব্যে এটি উল্লেখ করা হয়েছিল যে অক্ষর ম্যাট্রিকগুলি অনুমোদিত, এখানে একটি 58 বাইট সংস্করণ যা স্ট্রিংগুলির একটি তালিকা (প্রতিটি স্তরের জন্য একটি) ফেরত দেয়:

(#)=replicate
f w g c m=map(w#)$g#'G'++c#'C'++m#'M'++g#'G'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.