আমাকে একটি কেক বেক!


15

এটি একটি পিষ্টক:

_========_
|        |
+________+
|        |
+________+
|        |
+________+

এটি 8 প্রশস্ত, 3 লম্বা এবং 1 গভীর।

আপনার অবশ্যই একটি প্রোগ্রাম লিখতে হবে যা 3 ইনপুট থেকে কেক তৈরি করে। প্রথম ইনপুটটি মাঝখানে এবং =শীর্ষে কতগুলি আন্ডারস্কোর রয়েছে তা নিয়ন্ত্রণ করে। এখানে 8 এর পরিবর্তে 10 প্রস্থের সাথে প্রথম কেক দেওয়া হয়েছে:

_==========_
|          |
+__________+
|          |
+__________+
|          |
+__________+

দ্বিতীয় ইনপুট কেকটি কত লম্বা তা নিয়ন্ত্রণ করে। এখানে 3 এর পরিবর্তে 4 উচ্চতা সহ দ্বিতীয় কেকটি রয়েছে:

_==========_
|          |
+__________+
|          |
+__________+
|          |
+__________+
|          |
+__________+

স্তরগুলির পুনরাবৃত্তি নোট করুন।

তৃতীয় ইনপুটটি কত গভীর তা নিয়ন্ত্রণ করে। | |এটি শীর্ষে অন্তর্ভুক্ত করতে কতগুলি এস। এখানে 1 এর পরিবর্তে 2 গভীরতার সাথে তৃতীয় কেক এখানে রয়েছে:

_==========_
|          |
|          |
+__________+
|          |
+__________+
|          |
+__________+
|          |
+__________+

আপনি পেছনের সাদা স্থান মুদ্রণ করতে পারেন। পরীক্ষার কেস:

ইনপুট: 3, 3,3

আউটপুট:

_===_
|   |
|   |
|   |
+___+
|   |
+___+
|   |
+___+

(আমি আশা করি আমি এই কেকটি কখনই পাব না)

ইনপুট: 3, 2,1

আউটপুট:

_===_
|   |
+___+
|   |
+___+

ইনপুট: 5, 5,5

আউটপুট:

_=====_
|     |
|     |
|     |
|     |
|     |
+_____+
|     |
+_____+
|     |
+_____+
|     |
+_____+
|     |
+_____+

ইনপুটগুলি কি সর্বদা ইতিবাচক পূর্ণসংখ্যার হবে?
নিক ক্লিফোর্ড

@ নিকক্লিফফোর্ড হ্যাঁ

পেছনের নতুন লাইনের অনুমতি আছে?
শেগি


@ শেগি আমি ধরে নিই, এটি মেটাতে ডিফল্টভাবে হ্যাঁ।
প্রোগ্রামার

উত্তর:


9

ভি , 25 , 20 বাইট

2é_Àé=ÙÒ|èÙÒ+È_ÀäkÀÄ

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

Hexdump:

00000000: 32e9 5fc0 e93d d9d2 7ce8 d9d2 2bc8 5fc0  2._..=..|...+._.
00000010: e46b c0c4                                .k..

ধন্যবাদ @ nmjmcman101তিনটি বাইট সংরক্ষণ এবং আপনাকে একটি পুরানো অপারেটর মনে করিয়ে যা আরও দুটি বাইট সংরক্ষণ করেছে।

ব্যাখ্যা:

a, bএবং cতিনটি যুক্তি।

2é_                   " Insert two '_' characters
   Àé=                " Insert 'a' '=' characters between them
      Ù               " Duplicate this line
       Ò|             " Replace this whole line with '|'s
         è            " *Hollow* this line (replace all the middle characters with spaces)
          Ù           " Duplicate this line
           Ò+         " Replace this whole line with '+'s
             È_       " *Hollow* this line again, but use '_' instead of spaces
               Àäk    " Make 'b' copies of this line and the line above it
                  ÀÄ  " Make 'c' copies of this line

আমার মনে হয় আপনি প্রতিস্থাপন করতে পারেন Ò r|$.সঙ্গে Ò|èকিছু বাইট জন্য। এটি অনলাইন চেষ্টা করুন!
nmjcman101

@ nmjcman101 ওহে মানুষ, আমি সম্পূর্ণরূপে ভুলে গেছি যে èএমনকি বিদ্যমান ছিল। এটি কী করে তা মনে রাখার জন্য আমাকে আমার মস্তিষ্ককে রাক করতে হয়েছিল। তবে আসলেই চালাক! প্রকৃতপক্ষে, বড় হাতের অক্ষর ব্যবহার করে È<char>সম্ভবত আরও কয়েকটি জায়গায় আরও কিছু বাইট সংরক্ষণ করতে পারে। আমাকে মনে করার জন্য ধন্যবাদ! :)
জেমস

4

কাঠকয়লা , 34 26 বাইট

Nγ←×γ_↑+↑N_×γ=‖BOγF⁻N¹C⁰±²

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। অর্ডার প্রস্থ, গভীরতা, উচ্চতায় পরামিতি নেয়। ব্যাখ্যা:

Nγ          Input the width.
←×γ_        Print a set of _s that go at the bottom of each layer.
↑+          Print one of the +s that go on the left.
↑N          Input the depth and print that many left |s.
_           Print the top left _.
×γ=         Print the =s along the top.
‖BOγ        Copy the left column to the right.
F           Repeat:
 ⁻ ¹         One time fewer than:
  N           Input of the height:
    C⁰±²        Copy the whole cake up 2 characters.

2

গণিত, 167 বাইট

c=Column;r=Row;t=Table;f=Flatten;c[c/@{r/@f[{{{"_",r@t["=",#],"_"}},t[{"|",r@t[" ",#],"|"},#3-1]},1],c/@f[{t[{r@{"|",r@t[" ",#],"|"},r@{"+",r@t["_",#],"+"}},#2]},1]}]&

2

পিএইচপি> = 7.1, 104 বাইট

for([,$w,$h,$t]=$argv;$i<2*$h+$t;)echo str_pad($e="_|+"[$b=$i++<$t?$i>1:1+$_++%2],$w+1,"= _"[$b])."$e
";

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


1
খারাপ না. 3 বাইট পাওয়া গেছে:for([,$w,$h,$t]=$argv;$i<2*$h+$t;)echo str_pad($e="_|+"[$b=$i++<$t?$i>1:2-($i-$t&1)],$w+1,"= _"[$b])."$e\n";
ক্রিস্টোফ

1
আর একজন 3 বাইট: $b=$i++<$t?$i>1:1+$_++%2
ক্রিস্টোফ

@ ক্রিসটফ চমৎকার ধারণা আপনাকে ধন্যবাদ
জার্গ হালসারম্যান



1

জেলি , 30 29 বাইট

বাইরের এবং অভ্যন্তরীণ কলামগুলির মধ্যে অনুবাদ করতে একটি এক্সওআর সংযোজন থেকে বাইটটি স্যুইচ করা, দুটি _প্রবেশের পরিবর্তে 5 টি চরিত্রের অনুসন্ধানের অনুমতি দেয় ।

ṬṚ;⁹RḤṬḤ¤Wµ^9ẋ⁵;@;µZị“_+= |”Y

পুরো প্রোগ্রাম তিন প্রোগ্রাম আর্গুমেন্ট গ্রহণ depth, height, widthও cake মুদ্রণ।

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

কিভাবে?

ṬṚ;⁹RḤṬḤ¤Wµ^9ẋ⁵;@;µZị“_+= |”Y - Main link: depth, height (width is a program argument)
Ṭ                             - untruth   [0,0,0,...1] such that the length is the depth
 Ṛ                            - reverse   [1,0,0,...0]
        ¤                     - nilad followed by link(s) as a nilad:
   ⁹                          -   link's right argument, height
    R                         -   range   [1,2,3,...,height]
     Ḥ                        -   double  [2,4,6,...,2*height]
      Ṭ                       -   untruth [0,1,0,1,0,1,...,0,1] (length double height)
       Ḥ                      -   double  [0,2,0,2,0,2,...,0,2]
  ;                           - concatenate  [1,0,0,...,0,0,2,0,2,0,2,...,0,2]
                              -     ...this is the form of a column of cake!
         W                    - wrap in a list
          µ                   - monadic chain separation, call that c
           ^9                 - bitwise XOR c with 9 [8,9,9,...,9,9,11,9,11,9,11,...,9,11]
              ⁵               - program's 3rd argument, width
             ẋ                - repeat the augmented c width times
               ;@             - concatenate with a copy of c
                 ;            - concatenate a copy of c
                  µ           - monadic chain separation call that sideways cake
                   Z          - transpose the sideways cake to put it the right way up
                     “_+= |”  - literal ['_','+','=',' ','|'] (cake decoration)
                    ị         - index into (1 based and modular, so 8,9, and 11 are, mod 5,
                                            3, 4, and 1 yielding '=', ' ', and '_')
                            Y - join with new lines
                              - implicit print



1

জাভা 7 , 169 164 158 বাইট

String f(int...a){String s="_",t="|",u="+";for(;a[0]-->0;s+="=",t+=" ")u+="_";s=s+"_";t="\n"+t+"|";u=t+"\n"+u+"+";for(;a[2]-->1;)s+=t;for(;a[1]-->0;)s+=u;return s;}

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

Ungolfed:

String f(int...a)                    // saves two bytes over int a, int b, int c
{
    String s="_", t="|", u="+";      // set up the start of each row

    for(; a[0]-->0; s+="=", t+=" ")  // Uses the goes-to operator to fill the row
        u+="_";                      

    s += "_\n";                      // adds the end of each row
    t += "|\n";              
    u = t + u + "+\n";               // and combining t into u

    for(; a[2]-->1; )                // add the top of the cake
        s += t;

    for(; a[1]-->0; )                // add the rest of the cake
        s += u;

    return s;
}

আপনি u=t+u+"+\n" inside the for-loop: (u = t + u + "+ + \ n; a [2] -> 1;) এস + = টি; putting রাখার মাধ্যমে 1 বাইট সংরক্ষণ করতে পারেন nice তবে চমৎকার উত্তর, আমার কাছ থেকে +1
কেভিন ক্রুইজসেন

1

05AB1E , 33 31 বাইট

'_'=¹×«Ć,'|¹úRóG=}²F='+'_¹×«Ć,

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

ব্যাখ্যা

'_'=¹×«Ć,'|¹úRóG=}²F='+'_¹×«Ć,   Main link. Args: w h d
'_                                Push literal '_'
  '=¹×                            Push '=' w times
      «Ć,                         Concat, enclose and print
         '|                       Push literal '|'
           ¹ú                     Pad with w spaces in front
             RĆ                   Reverse and ecnlose
               ³G }               d - 1 times do:
                 =                Print without consuming
                   ²F             h times do:
                     =            Print without consuming
                      '+          Push literal '+'
                        '_¹×      Push '_' w times
                            «Ć,   Concat, enclose and print

1

উইন্ডোজ ব্যাচ, 211 180 163 বাইট

নিলকে ধন্যবাদ দিয়ে মোট 48 টি বাইট গল্ফ করেছে!

@for /l %%p in (1,1,%1)do @call set w= %%w%%
@echo _%w: ==%_
@for /l %%p in (2,1,%3)do @echo ^|%w%^|
@for /l %%p in (1,1,%2)do @echo ^|%w%^|&echo +%w: =_%+
@set w=

1
1. @প্রতিটি লাইনে এবং তারপরে ব্যবহার করা doতার চেয়ে সামান্য খাটো @echo off। 2. @call set w=%%w%%_এড়ানো setlocal enabledelayedexpansion। 3. ব্যবহার করুন @for /l %%p in (2,1,%2)। ৪. আইএমএইচও আপনার যুক্ত করা উচিত @set w=যাতে কোডটি একাধিকবার কাজ করে।
নিল

আমি শেষ অংশটি দ্বারা বিভ্রান্ত হয়ে পড়েছি, যদি আমি যুক্ত না করি, তাহলে @set w=কোডটি কি আবার একবারের জন্য কাজ করবে না?
স্টিভেস্টেল

1
1. আপনার @for /l %%p in (1,1,%1)doমনে হয় নিখোঁজ হয়েছে। ২. আপনার কেকটি ভুল উচ্চতা বলে মনে হচ্ছে, কমপক্ষে এটি চেষ্টা করার পরে পরীক্ষার কেসের সাথে মেলে না বলে মনে হচ্ছে। ৩. যদি আপনি একই কমান্ড সেশনে দু'বার স্ক্রিপ্টটি চালান তবে কেকটি আরও প্রশস্ত এবং বিস্তৃত হবে।
নীল

@ নীল এটি সব ঠিক আছে :)
স্টিভেস্টেল

1
গ্রেট! মাত্র কয়েক গত জিনিষ আমি লক্ষ্য: 1. আপনি প্রয়োজন হবে না @পরে &। 2 আপনি যদি দ্বিতীয় লুপটি (2,1,%3)এবং তৃতীয় লুপটি পরিবর্তন করেন (1,1,%2)তবে আমি মনে করি আপনি echo +%w%+লাইনটি মুছতে পারেন । ৩. যদি আমি সঠিকভাবে গণনা করেছি, তবে আমার মনে হয় আপনার s এর wপরিবর্তে ফাঁকা স্থানগুলি পূরণ করা উচিত , _এর ফলে কম বিকল্প হবে। (আমি @call set w= %%w%%অন্যথায় স্থানটি খুঁজে পাওয়া শক্ত) হিসাবে ব্যবহার করব !)
নীল

1

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

f w t d=["_=| +_\n"!!j|i<-0:([2..d]>>[2])++([1..t]>>[2,4]),j<-i:([1..w]>>[i+1])++[i,6]]

1
বেশিরভাগ অ-গল্ফিং ভাষাগুলি পিছনে রেখে খুব ভাল কাজ। একটি ইনফিক্স ঘোষণা (w#t)d= ...একটি বাইট সংরক্ষণ করে।
লাইকনি

1

এসওজিএল ভি0.12 , 25 বাইট

e =*¼_Oe↕¼|.⌡Qe╔*¼+.H«{Q;

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

প্রস্থ, গভীরতা এবং উচ্চতা হিসাবে ইনপুট আশা করে।


ইনপুটগুলি কি পুনরায় অর্ডার করার অনুমতি দেওয়া হচ্ছে? তারা একটি নির্ধারিত আদেশে নির্দিষ্ট বলে মনে হচ্ছে।
পুনরাবৃত্তি

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

1

পাইথন 2, 124 122 120 105 92 বাইট

w,t,d=input()
a="\n|"+w*" "+"|"
print"_"+w*"="+"_"+(d-1)*a+t*(a+"\n+"+w*"_"+"+")

প্রোগ্রাম আর্গুমেন্টের পরিবর্তে STDIN ব্যবহার করে -15 বাইটস

পাইথন 2 এ স্যুইচ করে -13 বাইট ( input()পূর্ণসংখ্যা এবং printস্টেটমেন্টের জন্য)

কেয়ার্ড কইনারিংহিংয়ের কাছ থেকে -12 বাইট

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

পাইথন 3, 124 122 120 105 বাইট

w,t,d=[int(input())for n in(1,2,3)]
a="\n|"+w*" "+"|"
print("_"+w*"="+"_"+(d-1)*a+t*(a+"\n+"+w*"_"+"+"))

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

যদি একটি পূর্ণ প্রোগ্রাম প্রয়োজন হয় না:

পাইথন 3, 87 84 বাইট

lambda w,t,d:"_"+w*"="+"_"+(d-1)*("\n|"+w*" "+"|")+t*("\n|"+w*" "+"|\n+"+w*"_"+"+")

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







0

জাভাস্ক্রিপ্ট / ইএস 6, 90 বাইট

আমি সবেমাত্র একটি মোটামুটি সমাধান লিখেছি এবং বিদ্যমান জেএস উত্তরটিকে পুরোপুরি 56 বাইটে হারাতে পেরেছি। তারপরে আমি 11 বাইট বন্ধ করেছিলাম।

(w,h,d,g=a=>a+a[1][r='repeat'](w)+a[0]+`
`)=>g('_=')+(l=g('| '))[r](d-1)+(l+g('+_'))[r](h)

এখানে একটি ডেমো রয়েছে।

var F = (w,h,d,f=a=>a+a[1][r='repeat'](w)+a[0]+`
`)=>f('_=')+(l=f('| '))[r](d-1)+(l+f('+_'))[r](h);

console.log(F(prompt('width') || 3, prompt('height') || 3, prompt('depth') || 3));
console.log(F.toString().length);


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