এটি আমার জন্মদিন: ডি


112

ভূমিকা

গত বছরটি আমার জন্মদিন ছিল (সত্যিই!) এবং দুঃখের সাথে আমাকে নিজের পার্টি আয়োজন করতে হয়েছিল। ঠিক আছে, এখন আপনি জানেন, আপনি কমপক্ষে কেক তৈরি করতে পারেন না?

চ্যালেঞ্জ

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

আউটপুট

একটি মোমবাতিযুক্ত কেকের টুকরোটি হ'ল:

 $
 |
---
~~~
---

এবং তিনটি মোমবাতিযুক্ত কেকের টুকরোটি হ'ল:

 $ $ $
 | | |
-------
~~~~~~~
-------

আমি নিশ্চিত যে আপনি এটি থেকে এটি কাজ করতে পারবেন

তবে ইনপুট দেওয়ার জন্য0আপনাকে অবশ্যই নিম্নলিখিত ফলাফলগুলি আউটপুট করতে হবে:

Congratulations on your new baby! :D

কম ইনপুট জন্য 0, আপনি একটি মোমবাতিবিহীন কেক আউটপুট করা উচিত:

---
~~~
---

কোনও কিছুই এসটিডিআরআর থেকে আউটপুট হওয়ার অনুমতি নেই।

চলমান নিউলাইন এবং স্পেসগুলি অনুমোদিত।

জয়লাভ

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

লিডারবোর্ড

var QUESTION_ID=57277;OVERRIDE_USER=30525;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>


161
শুভ জন্মদিন!
ডেনিস

1
মোমবাতিবিহীন কেকের জন্য অনুমতিপ্রাপ্ত হোয়াইটস্পেসের (উদাহরণস্বরূপ 2 টি নতুন লাইনগুলি) অনুমতি দেওয়া হচ্ছে?
স্তর নদী সেন্ট

2
@steveverrill হ্যাঁ

2
@ PaŭloEbermann 3-প্রস্থের একটি পিষ্টক

4
@ jvriesem নং এটি স্নিপেটের জন্য কোড।
সিগড

উত্তর:


36

পাইথ, 73 72 71 69 67 বাইট

?Qjb+m*+\ dQ"$|"*RhyeS,1Q"-~-""Congratulations on your new baby! :D

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

মন্তব্যে অনুমোদিত হিসাবে এন <0 এর আউটপুটে 2 টি শীর্ষস্থানীয় নিউলাইন রয়েছে । এগুলি থেকে মুক্তি পেতে ব্যবহার করুন

?QjbfT+jR*\ hQ"$|"*RhyeS,1Q"-~-""Congratulations on your new baby! :D

ক্ষুদ্রতম কোড, অবশ্যই, কমপক্ষে মানব পাঠযোগ্য বলে মনে হয়।
সতীশ সানজিবি

ডাব্লুটিএফ এটা কি ??? উচ্চহাস্য
Starx

18

সিজেম, 76 75 বাইট

ri_W>\_1e>)" $ |--~~--"2/f*Wf<N*"Congratulations on your new baby! :D"?_8>?

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

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

ri           e# Read an integer from STDIN.
_W>          e# Check if it is greater than -1.
\_           e# Swap input and Boolean and copy the input.
1e>)         e# Take the maximum of input and 1 and increment the result.
             e# Let's call the result R.
" $ |--~~--" e# Push that string.
2/           e# Split it into [" $" " |" "--" "~~" "--"].
f*           e# Repeat each chunk R times.
Wf<          e# Discard the last character of each repeated chunk.
N*           e# Join the repreated chunks, separating by linefeeds.

"Congratulations on your new baby! :D"

?            e# If the input is non-zero, select the cake; else, keep the string.
_8>          e# Push a copy and discard the first 8 characters (single candle).
?            e# Select the unmodified cake/string if the input was non-negative,
             e# a candleless cake otehrwise.

11

রুবি, 120 বাইট

রিভিশন 1 (120 বাইট)

18 বাইট ম্যানটওয়ার্কের জন্য ধন্যবাদ সংরক্ষণ করেছে

n=gets.to_i
puts ['Congratulations on your new baby! :D',%w{\ $ \ | - ~ -}.map{|e|e.ljust 2*n+1,e},'---
~~~
---'][n<=>0]

রিভিশন 0 (138 বাইট)

n=gets.to_i
n>0&&[' $',' |',?-,?~,?-].each{|e|puts''.rjust(2*n+1,e)}
puts ['Congratulations on your new baby! :D','','---
~~~
---'][n<=>0]

ধনাত্মক সংখ্যার জন্য: এটি কেকের প্রতিটি লাইনের সাথে সম্পর্কিত একটি স্ট্রিংয়ের মাধ্যমে পুনরাবৃত্তি করে। এগুলি প্যাড স্ট্রিং হিসাবে খালি স্ট্রিংটিকে দৈর্ঘ্য 2 * n + 1 এ ন্যায়সঙ্গত করতে ব্যবহৃত হয়। এটি একটি বিজোড় সংখ্যক অক্ষর মুদ্রণের সাথে কোনও জটিলতা এড়ায়, যখন প্রাকৃতিক পুনরাবৃত্তিটি মোমবাতির পিচের সমান হয় (অর্থাত্ 2 অক্ষর।) n>0&&ইনপুট শূন্যের ক্ষেত্রে একক কলাম আউটপুট এড়াতে প্রয়োজনীয়।

সমস্ত সংখ্যার জন্য: " n<=>0" ইনপুটটির চিহ্ন সন্ধান করে। শিশুর বার্তাটি এন = 0 এর আউটপুট এবং ধনাত্মক এন এর জন্য একটি ফাঁকা স্ট্রিং (যেমন সঠিক আউটপুট ইতিমধ্যে উপরে দেওয়া হয়েছে)) নেতিবাচক এন এর জন্য রুবি -1 টি অ্যারের শেষ উপাদান হিসাবে ব্যাখ্যা করে এবং মোমবাতিবিহীন ফলাফলকে আউটপুট দেয় পিষ্টক।


1
খুব বেশি নেই puts? n=gets.to_i puts ['Congratulations on your new baby! :D',%w{\ $ \ | - ~ -}.map{|e|''.rjust 2*n+1,e},'--- ~~~ ---'][n<=>0]
manatwork

1
আরও একটি: ''.rjuste.ljust
manatwork

@ মানাটওয়ার্ক ধন্যবাদ, আমার এটি খুঁজে পাওয়া উচিত ছিল, তবে আমি খুব তাড়াতাড়ি এটি করেছি। আমি% w দিয়ে ব্যাকস্ল্যাশ স্পেস সম্পর্কে জানতাম না। এবং e.just: খুব চালাক।
লেভেল নদী

11

আর, 157

write(if(n<-scan()){
z=matrix(c("$","|","-","~","-"),N<-2*max(1,n)+1,5,T)
z[seq(1,N,1+(n>0)),1:2]=" "
z}else"Congratulations on your new baby! :D","",N,F,"")

2
আমি সেখানে প্যারামিটার লেখার বিষয়ে অনেক কিছু শিখছি। এক উজ্জ্বল
টেনসিবাই

10

আর, 228 226 220 221 বাইট


মোমবাতিবিহীন কেক সংশোধন করার জন্য সর্বশেষ সম্পাদনাটি নেতিবাচক ক্ষেত্রে যেমন ইতিবাচক ছিল ততই প্রশস্ত ছিল, প্রতিক্রিয়াটির জন্য ধন্যবাদ @ ক্যাথজি এবং @ জবাআমস

n=scan()
s=strsplit
p=paste0
a=b='-~-'
if(!n)cat('Congratulations on your new baby! :D')else{
if(n>0){a=p('  ',a);b=p('$|',b)}else n=1
a=s(a,'')
b=s(b,'')
d=data.frame(rep(c(a,b),n),a)
cat(do.call(p,d),sep="\n")}

1
কয়েকটা বাইট সংরক্ষণ করা যায়: <-হতে পারে =, এবং আপনি ব্যবহার করতে পারেন a=b='-~-'
jbaums

হো, ধন্যবাদ @ জবাআমস প্রথমটি ভুলে গেছেন এবং দ্বৈত কার্যনির্বাহী হওয়া সত্ত্বেও করেন নি
তেনসিবাই

আপনার কোথাও বন্ধনীর সমস্যা রয়েছে, আমি পেয়েছিError: unexpected '}'
ফ্লাডেল

@ ফ্লোডেল সংশোধন হয়েছে। অনুলিপি / পেস্ট ইস্যু
টেনসিবাাই

10

জাভাস্ক্রিপ্ট ES6, 136

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

ফায়ারফক্সে স্নিপেট চালানোর পরীক্ষা করুন।

/* Redefine alert for testing purpose */ alert=x=>O.innerHTML=x;

alert((n=+prompt())?[...'$|-~-'].map((c,i)=>(i>1?c:' '+c).repeat(i>1?n>0?n-~n:3:n>0&&n)).join`
`:'Congratulations on your new baby! :D')
<pre id=O></pre>

কম গল্ফড

n=+prompt(); // get input and convert to number

if (n) { // if n != 0 prepare the cake
   output = [...'$|-~-'].map( // for each char of the five lines
     (c,i) => (i>1 ? c : ' '+c) // in line 0 and 1 symbols are space separated
     // if n < 0 repeat count is 0 for line 0 and 1, 3 for the other
     // if n > 0 repeat count is n for line 0 and 1, n+n+1 for the other
     .repeat(i>1 ? n>0 ? n-~n : 3 : n>0 && n) // 
   ).join`\n`;
}
else {
    output = 'Congratulations on your new baby! :D');
}

alert(output);

এটি চেষ্টা করুন $('div pre code')[2].innerHTML;)
ভাসু আদারি

7

আর, 279 বাইট

ইন্টারেক্টিভ সংস্করণ (286 বাইট):

b<-function(){
n=scan()
if(n==0)cat("Congratulations on your new baby! :D\n")
if(n>0){k=2*n+1;m=rep("-",k);cat(paste(c(rep(c(" ","$"),l=k),"\n",rep(c(" ","|"),l=k),"\n",m,"\n",rep("~",k),"\n",m,"\n"),collapse=""))}
if(n<0){m=rep("-",3);cat(paste(c(m,"\n",rep("~",3),"\n",m,"\n"),collapse=""))}
}

ইন্টারেক্টিভ সংস্করণ নয় (279 বাইট):

b<-function(n){
if(n==0)cat("Congratulations on your new baby! :D\n")
if(n>0){k=2*n+1;m<-rep("-",k);cat(paste(c(rep(c(" ","$"),l=k),"\n",rep(c(" ","|"),l=k),"\n",m,"\n",rep("~",k),"\n",m,"\n"),collapse=""))}
if(n<0){m=rep("-",3);cat(paste(c(m,"\n",rep("~",3),"\n",m,"\n"),collapse=""))}
}

7

ম্যাটল্যাব / অক্টোব, 194 198 195 189 171 167 বাইট

তোমার জন্মদিনের শুভেচ্ছা বিটা ক্ষয়! :)

4 টি বাইট শেভ করার জন্য হামতারো ওয়ারিয়রকে ধন্যবাদ!


n=input('');m='$|'.';d='  '.';if(n==0)disp('Congratulations on your new baby! :D'),break;elseif(n<0)m=d;n=1;end,disp([[d repmat([m d],1,n)];repmat('-~-'.',1,2*n+1)]);

নমুনা রান

আমি এটিকে একটি স্ক্রিপ্ট ফাইল বলেছি happy_birthday.mযা কমান্ড প্রম্পটে কয়েকবার চালিয়েছে। মনে রাখবেন যে আপনি যখন কোনও নেতিবাচক সংখ্যায় প্রবেশ করেন, তখন দুটি চালিত গাড়ি ফেরত পাওয়া যায়, তবে এই চ্যালেঞ্জটিতে এটি অনুমোদিত:

>> happy_birthday
-1


---
~~~
---
>> happy_birthday
0
Congratulations on your new baby! :D
>> happy_birthday
1
 $ 
 | 
---
~~~
---
>> happy_birthday
2
 $ $ 
 | | 
-----
~~~~~
-----
>> happy_birthday
3
 $ $ $ 
 | | | 
-------
~~~~~~~
-------
>> happy_birthday
4
 $ $ $ $ 
 | | | | 
---------
~~~~~~~~~
---------
>> happy_birthday
5
 $ $ $ $ $ 
 | | | | | 
-----------
~~~~~~~~~~~
-----------

ব্যবধান এবং ব্যাখ্যা সহ কোড

% Get the input number from the user
n=input('');

% If the number is positive, the core candle sequence is going to be a column vector of a $ followed by a | character
m='$|'.';    

%// Array of one column and it has two spaces - going to use more than once
d = '  '.';

% If the number is 0, display the congratulations message and get out
if(n==0)
    disp('Congratulations on your new baby! :D')
    break;

% m stores the core candle sequence for displaying on the screen
% If the number is negative, the core candle sequence is going to be a column of two blank spaces
elseif(n<0)
    m=d; 
    n=1; % n is set to 1 as this is the number of "blank candles" we want to display
end

% This displays candles and the base together
% The top half is the displaying of the candles
% It is a column vector of spaces, followed by pairs of $,| in a column
% and another column of spaces - repeated n times
% The bottom half is the displaying of the cake
% The bottom half is a column vector of -,~,- for the base of the cake
% and is repeated 2*n + 1 times to match the candle display
disp([[d repmat([m d],1,n)];repmat('-~-'.',1,2*n+1)]);

শেষে প্রদর্শিত অংশটি সম্ভবত কোডটির সবচেয়ে আপত্তিজনক অংশ। এটি একটি 5 সারি অক্ষরের ম্যাট্রিক্স প্রদর্শন করতে যাচ্ছে যেখানে প্রথম দুটি সারিটি মোমবাতি নিয়ে গঠিত এবং শেষ তিনটি সারি কেকের বেসকে নিয়ে গঠিত।

ডিসপ্লেটির উপরের অর্ধেকের ভিত্তিতে হয় কলামের দুটি ফাঁকা স্থান এবং তারপরে অন্য কলামের আরও দুটি স্পেসের পরে বয়স নেতিবাচক, $,-এবং একটি কলামে এবং পরে অন্য কলামে দুটি ফাঁকা স্থান রয়েছে। এটি একটি 2 এক্স 2 অক্ষরের ম্যাট্রিক্স। ডিসপ্লেটির নীচের অর্ধেকের ভিত্তিতে একক কলাম ভেক্টর -,~,-যার একটি 3 x 1 অক্ষর ম্যাট্রিক্স।

ডিসপ্লে কমান্ড প্রথমে প্রথম কলামে দুটি ফাঁকা জায়গা রেখে কেকের প্রথম দুটি সারিটি মোকাবেলা করে, এর পরে কলামের একটি কলাম $,-বা ফাঁকাগুলির একটি কলাম যদি nnegativeণাত্মক হয়, যা পরিবর্তিত হয় n=1এবং দুটি স্পেসের আরেকটি কলামের জন্য পুনরাবৃত্তি হয় মোট nসময়। পরবর্তী তিনটি সারি কেবল -,$,-কলামের ভেক্টরটির 2*n + 1বারের জন্য বেসের সাথে একসাথে মোমবাতিগুলি সারিবদ্ধ করার জন্য চিত্রটি সম্পূর্ণ করে।

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

আপনি এই আইডিইউনের অক্টাভা সংকলকটি ব্যবহার করে অনলাইনে চেষ্টা করতে পারেন: http://ideone.com/4qXDdJ - তবে, স্ট্যান্ডার্ড ইনপুট থেকে মানগুলি পড়ার সময় একটি সামান্য বাগ রয়েছে। যেমন, স্ক্রিপ্টটি সামান্য পরিবর্তিত হয় যেখানে আপনাকে nকোডের শুরুতে মান পরিবর্তন করতে হবে । স্ক্রিপ্টের নতুন সংস্করণটি কাঁটাচামচ করুন এবং আউটপুট কেমন লাগে তা দেখতে এটির জন্য পূর্ণসংখ্যার মানটি আপনার উপযুক্ত অনুসারে পরিবর্তন করুন।


1
করুণা আপনি বিন্দু ভিতরে সংরক্ষণ করতে পারবেন না ' '.'!
লুইস মেন্ডো

1
@ লুইস মেন্ডো - আমি জানি! ... যদিও আমি নিশ্চিত যে আপনি ট্রান্সপোস ব্যবহার করে তাতে আপত্তি করবেন না :)
রায়রেং

1
Hahaha। আমাকে একবার এখানে বলা হয়েছিল যে এই সাইটটি ভাষা অপব্যবহারের জন্য । এবং আমি সেই নিয়ম বিশ্বস্তভাবে অনুসরণ করি!
লুইস মেন্ডো

1
@ লুইসমেন্দো - আমি সত্যিই বিন্দু থেকে মুক্তি পেতে চেয়েছিলাম ... তবে ম্যাটল্যাব যে স্ট্রিংয়ের একক উদ্ধৃতি হিসাবে ব্যাখ্যা করেছে তা করতে পারেনি :( আমাকে কয়েকটা বাইট বাঁচাতে পারত ... তবে বহুবার পুনরাবৃত্তির পরেও এটি ছিল
সেরাটি

@ লুইসমেডো - এটি 171 এ নামিয়ে আনাতে সক্ষম!
rayryeng

6

জাভাস্ক্রিপ্ট, 143 153 বাইট

for(v in k=' $ 0 | 0---0~~~0---'.split(+!(n=+prompt(c=''))))c+=k[v].repeat(n<0?1:n)+'\n';alert(n>0?c:n?c.slice(8):'Congratulations on your new baby! :D')

মনো স্পেস ফন্টে আউটপুট দেখতে 'কনসোল.লগ' দ্বারা 'সতর্কতা' প্রতিস্থাপন করুন


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

2
দুঃখজনকভাবে এটি নেতিবাচক ইনপুটটির জন্য অভিনন্দন বার্তাটি প্রদর্শন করে।
manatwork

@ বেটাডেখে টিএনএক্স :-)
নাইনেমম

মানাটওয়ার্কের অধিকার: / আমি সাহায্য করতে যথেষ্ট জেএস জানি না

@ মান্যাটওয়ার্ক হ্যাঁ ঠিক বলেছেন! আমি ভুল বুঝেছিলাম!
নাইনেমম

5

মুনস্ক্রিপ্ট, 141 বাইট

n=0+io.read!
m=3
f=(s='-')->print s\rep m
if n>0
 m=n
 m=1+2*m,f' $',f' |'
if n==0 print"Congratulations on your new baby! :D"else f f!,f'~'

3
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম!
ডেনিস


4

জাভাস্ক্রিপ্ট ES6, 154 অক্ষর

alert((n=+prompt())?((n>0?` $
 |
`:(n=1)&&"")+`--
~~
--`).replace(/../gm,x=>x.repeat(n)).replace(/(.).*/gm,"$&$1"):"Congratulations on your new baby! :D")

এবং আরও একটি (154 খুব)

alert((n=+prompt())?` $
 |
--
~~
--`.slice(n<0?(n=1)-9:0).replace(/../gm,x=>x.repeat(n)).replace(/(.).*/gm,"$&$1"):"Congratulations on your new baby! :D")

মনোস্পেস ফন্টে আউটপুট দেখতে (এবং কনসোলে আউটপুট সরানো) ব্যবহার করুন

alert=x=>console.log(x)

4

মাউস , 164 161 বাইট

?N:N.0=["Congratulations on your new baby"33!'" :D"$]N.0>[#P,32!'36,N.;#P,32!'124,N.;]N.0<[1N:]2N.*1+D:#P,45,D.;#P,126,D.;#P,45,D.;$P0I:(I.2%=0=^1%!'I.1+I:)"!"@

মাউস পরিষ্কারভাবে এই কাজের জন্য একটি আদর্শ পছন্দ নয়, তবে এটি মজাদার ছিল।

Ungolfed:

? N.                               ~ Read N from STDIN
N. 0 = [                           ~ Have a baby for N == 0
  "Congratulations on your new baby" 33 !' " :D" $
]
N. 0 > [                           ~ If N > 0...
  #P, 32 !' 36, N.;                ~ Print the candle flames
  #P, 32 !' 124, N.;               ~ Print the candle sticks
]
N. 0 < [                           ~ If N < 0...
  1 N:                             ~ Set N = 1
]
2 N. * 1 + D:                      ~ Assign D = 2N + 1
#P, 45, D.;                        ~ Print the top cake layer
#P, 126, D.;                       ~ Print the middle layer
#P, 45, D.;                        ~ Print the bottom
$P                                 ~ Define the printing macro...
  0 I:                             ~ Initialize I to 0
  ( I. 2% = 0 = ^                  ~ While I != the second input
    1% !'                          ~ Print the first input
    I. 1 + I:                      ~ Increment I
  )
  "!"                              ~ Print a newline
@

স্ট্যাকটিতে কেবল পূর্ণসংখ্যা থাকতে পারে। !'স্ট্যাকটি থেকে একটি পূর্ণসংখ্যা নিয়ে যায় এবং সেই কোড দিয়ে ASCII অক্ষর মুদ্রণ করে।


4

কফিস্ক্রিপ্ট, 160 বাইট

f=(i,l=[" $ "," | ",_="---","~~~",_])->if!i then"Congratulations on your new baby! :D"else (if i<0then[_,l[3],_]else i++;(Array(i).join r for r in l)).join "\n"

Ungolfed:

f=(i)->
  l = [" $ "," | ","---","~~~","---"] # The layers
  if i == 0
    return "Congratulations on your new baby! :D"
  else if i < 0
    return [l[2], l[3], l[2]].join("\n")
  else
    i++
    return (Array(i).join(r) for r in l).join("\n")

এটি ব্যবহার করুন:

f(10) # In the CoffeeScript console
alert(f(~~prompt("Y"))) # Browser, alert popup
console.log(f(~~prompt("Y"))) # Browser, log to console, and thus has monospace font

এটি অনলাইনে ব্যবহার করে দেখুন: লিংকটিতে কিছু কাস্টম ডিসপ্লে কোড রয়েছে, তাই সবকিছু দেখতে খুব সুন্দর দেখাচ্ছে ...)

উফফ, প্রায় ভুলে গেছি! শুভ জন্মদিন, @ বেটাডেকে!


4

সি, 392 বাইট

(যদি কোনও যুক্তি না দেওয়া হয় তবে জ্ঞাত বিভাজন ত্রুটি)

#include <stdio.h>
#define P(s) printf(s);
#define F for(i=0;i<n;i++)
#define A(s, e) F{P(s)}P(e "\n")
int main(int c, char**v){int i,n=atoi(v[1]);if(n<0){n=3;A("-",)A("~",)A("-",)}else if(!n)P("Congratulations on your new baby! :D\n")else{A(" $",)A(" |",)A("--","-")A("~~","~")A("--","-")}}

অবিহীন এবং প্রচুর পরিমাণে ব্যবধানে

#include <stdio.h>
#define P(s) printf ( s ) ;
#define F for ( i = 0 ; i < n ; i++ )
#define A(s, e) F { P ( s ) } P ( e "\n" )
int main ( int c, char ** v )
{
        int i, n = atoi ( v [ 1 ] ) ; 
        if ( n < 0 ) 
        {   
                n = 3 ; 
                A ( "-", )
                A ( "~", )
                A ( "-", )
        }   
        else if ( ! n ) 
                P ( "Congratulations on your new baby! :D\n" )
        else
        {   
                A ( " $", )
                A ( " |", )
                A ( "--", "-" )
                A ( "~~", "~" )
                A ( "--", "-" )
        }   
}

সি বয়লারপ্লেট ছাড়াই # সংজ্ঞায়িত করে এবং মূল শরীরের মোট 247.
ফানমুনগাস

পিপিসিজিতে আপনাকে স্বাগতম! এটি সত্যিই ভাল উত্তর - আমি বিশেষত ম্যাক্রোর অপব্যবহারটি পছন্দ করি A। আমি আরও কয়েকটি স্পেস দেখতে পাচ্ছি যা অপসারণ করা যেতে পারে এবং এর পরিবর্তে আপনি লুপ ভেরিয়েবলটি iব্যবহার করে পরিত্রাণ পেতে পারেন c। এছাড়াও, কমপক্ষে সিসিডি সহ, stdio.h সহ বা প্রধান () এর রিটার্নের ধরণের নির্দিষ্টকরণ সহ প্রয়োজনীয় নয়: সংকলক এটি সম্পর্কে অভিযোগ করে, তবে ওহে, এটি কোড গল্ফ। ;)
DLosc

4

পাওয়ারশেল, 139 134 132 126 বাইট

$n=$args[0];if($n){$d=3;if($n-gt0){' $'*$n;' |'*$n;$d=$n*2+1}'-'*$d;'~'*$d;'-'*$d}else{'Congratulations on your new baby! :D'}

আপনি $inputপরিবর্তে 5 টি বাইট সংরক্ষণ করতে পারেন $args[0](প্রশ্ন +$n=+$input;
স্ট্যান্ডিনের

+ $ ইনপুটটি কাজ করে বলে মনে হচ্ছে না - এটি অভিযোগ করেছে যে $ ইনপুট একটি গণক এবং এতে অতিরিক্ত অপারেটর নেই। যাইহোক, $args[0]একটি প্রকৃত ইনট হতে পারে এবং হওয়া উচিত, আমাদের কমপক্ষে ড্রপ করতে দেয় [int]
জাস্টিন ডানলাপ

1
সুতরাং, এটি সত্যিই পুরানো, তবে আপনি ইনপুটটি সরিয়ে ifএবং elseএকটি ;exit- 122 বাইটের জন্য অদলবদল করে একটি দম্পতি বাইট সংরক্ষণ করতে পারেন -if($n=$args[0]){$d=3;if($n-gt0){' $'*$n;' |'*$n;$d=$n*2+1}'-'*$d;'~'*$d;'-'*$d;exit}'Congratulations on your new baby! :D'
অ্যাডমবার্কবার্ক 12:48

4

সিলোন, 322 307 300 282 278 260 বাইট

shared void run(){if(exists t=process.readLine(),exists n=parseInteger(t)){String r(String s)=>s.repeat(n);print(n>0thenr(" $")+"\n"+r(" |")+"\n"+r("--")+"-\n"+r("~~")+"~\n"+r("--")+"-"else(n<0then"---\n~~~\n---"else"Congratulations on your new baby! :D"));}}

এখনও গল্ফ করা আসল নয় (ধরে নিলাম নেতিবাচক কেকগুলির প্রস্থ –2 · n + 1 এর পরিবর্তে 3 width রয়েছে):

shared void birthdayCake() {
    if (exists text = process.readLine(), exists number = parseInteger(text)) {
        switch (number <=> 0)
        case (equal) {
            print("Congratulations on your new baby! :D");
        }
        case (smaller) {
            print("---\n~~~\n---");
        }
        case (larger) {
            print(" $".repeat(number));
            print(" |".repeat(number));
            print("--".repeat(number) + "-");
            print("~~".repeat(number) + "~");
            print("--".repeat(number) + "-");
        }
    }
}

এটি যদি বিবৃতিতে প্রতিটি শর্ত নিম্নলিখিত শর্তে এবং শরীরে ব্যবহারযোগ্য a যেহেতু তাদের কাছে রয়েছে exist, শর্তটি কেবল তখনই পূর্ণ হয় যখন মানগুলি শূন্য হয় না এবং এইভাবে সংকলকটি জানে যে নিম্নলিখিত কোডগুলির জন্য মানগুলি নাল নয়। (যদি কিছু প্রবেশ না করা হয় (ইওএফ), পাঠ্যলাইনটি শূন্য দেয় p

এছাড়াও আমাদের কাছে <=>অপারেটর রয়েছে, যা Comparable.compareপদ্ধতিতে মানচিত্র করে এবং একটি Comparisonবস্তু যেমন একটির equal, smallerএবং প্রদান করে larger। সংকলক জানে যে যারা Comparisonপ্রকারটি বন্ধ করে দেয় তাই elseআমাদের switchবিবৃতিতে কোনও ক্লজ প্রয়োজন নেই ।

repeatবর্গ স্ট্রিং পদ্ধতি এক আশা কি আছে। এটি আসলে ইন্টারফেস ইটেবারে একই নামকরণ পদ্ধতি থেকে উত্তরাধিকার সূত্রে প্রাপ্ত (যেমন স্ট্রিংটি অন্যান্য স্টাফের পাশাপাশি, কেবলমাত্র অক্ষরের একটি তালিকা)।

আমার শনাক্তকারীদের এক-বর্ণের পরিবর্তে এবং অপরিবর্তিত শ্বেত স্থান অপসারণ 322 টি অক্ষর দেয়:

shared void b(){if(exists t=process.readLine(),exists n=parseInteger(t)){switch(n<=>0)case (equal){print("Congratulations on your new baby! :D");}case(smaller){print("---\n~~~\n---");}case(larger){print(" $".repeat(n));print(" |".repeat(n));print("--".repeat(n)+"-");print("~~".repeat(n)+"~");print("--".repeat(n)+"-");}}}

printসুস্পষ্ট \n(এবং একটি একক print) দ্বারা সিরিজের প্রতিস্থাপন এটিকে 307 এ নামিয়ে আনে:

shared void b(){if(exists t=process.readLine(),exists n=parseInteger(t)){switch(n<=>0)case(equal){print("Congratulations on your new baby! :D");}case(smaller){print("---\n~~~\n---");}case(larger){print(" $".repeat(n)+"\n"+" |".repeat(n)+"\n"+"--".repeat(n)+"-\n"+"~~".repeat(n)+"~\n"+"--".repeat(n)+"-");}}}

আমি এর repeatহিসাবে উপনাম-আমদানি করার চেষ্টা করেছি r, তবে এটি কোনও লাভ করে না (আমদানির ঘোষণায় 40 টি অক্ষর যুক্ত হয়, এবং আমরা প্রতিস্থাপনের repeatমাধ্যমে কেবল 25 টি সঞ্চয় করতে পারি r)।

কি সামান্য সাহায্য করে, n.signপরিবর্তে ব্যবহার করা হয় n<=>0। যদিও এই দুটি এক্সপ্রেশন একই পাঠগত দৈর্ঘ্য, তারা বিভিন্ন ধরনের আছে: আধুনিক এক ধরনের হয় Comparisonআগে (যা তিন মান আছে উল্লেখ smaller, largerএবং equal), সাবেক এক ধরনের হয়েছে Integer, মান সঙ্গে -1, 1, 0... আর কারণ Integerআছে আরও অনেক মান, আমাদের একটি elseধারাও দরকার । এটি 300 অক্ষর দীর্ঘ:

shared void b(){if(exists t=process.readLine(),exists n=parseInteger(t)){switch(n.sign)case(0){print("Congratulations on your new baby! :D");}case(-1){print("---\n~~~\n---");}case(1){print(" $".repeat(n)+"\n"+" |".repeat(n)+"\n"+"--".repeat(n)+"-\n"+"~~".repeat(n)+"~\n"+"--".repeat(n)+"-");}else{}}}

এখানে সাদা স্থান সহ:

shared void b() {
    if (exists t = process.readLine(), exists n = parseInteger(t)) {
        switch (n.sign)
        case (0) {
            print("Congratulations on your new baby! :D");
        }
        case (-1) {
            print("---\n~~~\n---");
        }
        case (1) {
            print(" $".repeat(n) + "\n" +
                        " |".repeat(n) + "\n" +
                        "--".repeat(n) + "-\n" +
                        "~~".repeat(n) + "~\n" +
                        "--".repeat(n) + "-");
        }
        else {}
    }
}

আমরা আমাদের সুইচ স্টেটমেন্ট সম্পর্কে পদত্যাগ করে এবং if২৮২ টি অক্ষর (= বাইট) এ এসে ব্যবহার করে আরও কিছু নিরাপদ করতে পারি :

shared void b(){if(exists t=process.readLine(),exists n=parseInteger(t)){if(n==0){print("Congratulations on your new baby! :D");}else if(n<0){print("---\n~~~\n---");}else{print(" $".repeat(n)+"\n"+" |".repeat(n)+"\n"+"--".repeat(n)+"-\n"+"~~".repeat(n)+"~\n"+"--".repeat(n)+"-");}}}

বিন্যাসকৃত:

shared void b() {
    if (exists t = process.readLine(), exists n = parseInteger(t)) {
        if (n == 0) {
            print("Congratulations on your new baby! :D");
        } else if (n < 0) {
            print("---\n~~~\n---");
        } else {
            print(" $".repeat(n) + "\n" +
                        " |".repeat(n) + "\n" +
                        "--".repeat(n) + "-\n" +
                        "~~".repeat(n) + "~\n" +
                        "--".repeat(n) + "-");
        }
    }
}

এর >চেয়ে কম সংক্ষিপ্ততর হওয়ার কারণে আমরা কেসগুলি চারপাশে অদলবদল করে অন্য একটি বাইটকে নিরাপদ করতে পারি ==। আরেকটি "বিরক্তি" পুনরাবৃত্তি repeat(n)- nএকটি সংক্ষিপ্ত নাম সহ আমরা একটি স্থানীয় ফাংশন (একটি বন্ধ, এটি সংজ্ঞায়িত ব্লক থেকে মনে রাখে) সংজ্ঞা দিতে পারি:

String r(String s) => s.repeat(n);

এটি এই লেখার একটি ছোট উপায়:

String r(String s) {
    return s.repeat(n);
}

functionটাইপ অনুমানের জন্য আমরা রিটার্ন টাইপের পরিবর্তে ব্যবহার করতে পারি , তবে এটি কম নয়। এটি আমাদের 278 বাইট দেয়:

shared void b(){if(exists t=process.readLine(),exists n=parseInteger(t)){if(n>0){String r(String s)=>s.repeat(n);print(r(" $")+"\n"+r(" |")+"\n"+r("--")+"-\n"+r("~~")+"~\n"+r("--")+"-");}else if(n<0){print("---\n~~~\n---");}else{print("Congratulations on your new baby! :D");}}}

বিন্যাসকৃত:

shared void b() {
    if (exists t = process.readLine(), exists n = parseInteger(t)) {
        if (n > 0) {
            String r(String s) => s.repeat(n);
            print(r(" $") + "\n" + r(" |") + "\n" + r("--") + "-\n" + r("~~") + "~\n" + r("--") + "-");
        } else if (n < 0) {
            print("---\n~~~\n---");
        } else {
            print("Congratulations on your new baby! :D");
        }
    }
}

আসলে, বিবৃতিগুলির পরিবর্তে thenএবং elseঅপারেটরগুলি ব্যবহার করে ifআমাদের কিছু কল print(এবং কিছু ধনুর্বন্ধনী) সংরক্ষণ করতে দেয় :

shared void run() {
    if (exists t = process.readLine(), exists n = parseInteger(t)) {
        String r(String s) => s.repeat(n);
        print(n > 0 then r(" $") + "\n" +
                        r(" |") + "\n" +
                        r("--") + "-\n" +
                        r("~~") + "~\n" +
                        r("--") + "-"
                    else (n < 0
                        then "---\n~~~\n---"
                        else "Congratulations on your new baby! :D"));
    }
}

এটি মাত্র 261 বাইট:

shared void run(){if(exists t=process.readLine(),exists n=parseInteger(t)){String r(String s)=>s.repeat(n);print(n>0thenr(" $")+"\n"+r(" |")+"\n"+r("--")+"-\n"+r("~~")+"~\n"+r("--")+"-"else(n<0then"---\n~~~\n---"else"Congratulations on your new baby! :D"));}}

(আমি ফাংশন নামের runপরিবর্তে ব্যবহার করেছি bকারণ এভাবে ceylon runকোনও ফাংশনের নাম পাস না করে চালানো যেতে পারে ))

আমার গিথুব সংগ্রহশালাটির একটি মন্তব্য সংস্করণ রয়েছে


3

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


i=input()
l='\n'
s=''
if i==0:s='Congratulations on your new baby! :D'
elif i<0:s='---\n~~~\n---'
else:n=i*2+1;a=l+'-'*n;s=' $'*i+l+' |'*i+a+l+'~'*n+a
print s

3

গল্ফ্লুয়া, ১১৩ টি অক্ষর

\p(c)w(S.t(c,n))~$n=I.r()+0?n==0w"Congratulations on your new baby! :D"!??n>0p" $"p" |"n=n*2+1!?n=3$p"-"p"~"p"-"$

নমুনা রান:

bash-4.3$ golflua -e '\p(c)w(S.t(c,n))~$n=I.r()+0?n==0w"Congratulations on your new baby! :D"!??n>0p" $"p" |"n=n*2+1!?n=3$p"-"p"~"p"-"$' <<< 5
 $ $ $ $ $
 | | | | |
-----------
~~~~~~~~~~~
-----------

bash-4.3$ golflua -e '\p(c)w(S.t(c,n))~$n=I.r()+0?n==0w"Congratulations on your new baby! :D"!??n>0p" $"p" |"n=n*2+1!?n=3$p"-"p"~"p"-"$' <<< 0
Congratulations on your new baby! :D

bash-4.3$ golflua -e '\p(c)w(S.t(c,n))~$n=I.r()+0?n==0w"Congratulations on your new baby! :D"!??n>0p" $"p" |"n=n*2+1!?n=3$p"-"p"~"p"-"$' <<< -5
---
~~~
---

3

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

m=input()
n=m-1
p="---"+"--"*n
g="\n~~~"+"~~"*n+"\n"
if m>0:print" $"*m,"\n"," |"*m
s=p+g+p
print s if m!=0 else"Congratulations on your new baby! :D"

লেখকের পাইথনের কাছে :(


3

পার্ল, 139 127 117 বাইট

'-N' বা '-p' বিকল্পের প্রয়োজন হয় না।

সংশোধন 3 (নীচে ডোম হেস্টিংসকে ধন্যবাদ সহ):

$==<>;map{print$_ x(!$=||(/ /?$=:($=<1||$=)*2+1)).$/}!$=?'Congratulations on your new baby! :D':split 0,' $0 |0-0~0-'

রিভিশন 2:

$n=<>;map{print$_ x($n==0?1:(/ /?$n:($n<1?1:$n)*2+1)).$/}$n==0?('Congratulations on your new baby! :D'):(' $',' |','-','~','-')

সংশোধন 1:

$n=<>;map{print$_ x(($l=length())>2?1:($l==2?$n:($n<1?1:$n)*2+1)).$/}$n==0?('Congratulations on your new baby! :D'):(' $',' |','-','~','-')

এখানে সংশোধন 3 এর একটি সংস্করণ রয়েছে যা নেতিবাচক ইনপুট - 132 বাইটে শীর্ষস্থানীয় ফাঁকা নতুন লাইন নেই।

$==<>;map{print$_ x(!$=||(/ /?$=:($=<1||$=)*2+1)).(/ /&&$=<0?'':$/)}!$=?'Congratulations on your new baby! :D':split 0,' $0 |0-0~0-'

ওহে, স্বাগতম! ভেবেছিলাম আমি কয়েকটা উপায় ভাগ করে নেব যা আপনি কিছু বাইট সংরক্ষণ করতে পারবেন! আপনার চারপাশের বন্ধনী ড্রপ করতে পারেন "Congratulations..."এবং যদি আপনি প্রতিস্থাপন ' $',' |','-','~','-'সঙ্গে split 0,' $0 |0-0~0-'আপনি খুব ঐ বন্ধনীর ড্রপ করতে পারেন। আর একটি সেভ প্রতিস্থাপন করা $n=<>;$n==0হয় ($n=<>)==0। আপনি যেমনটি বলছিলেন (যা 1) বা আপনার গণনা হিসাবে আপনার ?1:হতে পারে । আশা করি এইটি কাজ করবে! ||$n==0
ডোম হেস্টিংস

ওহে, তার জন্য ধন্যবাদ। এই বন্ধনীগুলি একটি ভাল, এবং এর শব্দার্থ সম্পর্কে ||আমাকে স্মরণ করিয়ে দেওয়া খুব সহায়ক - এটি আমাকে $=মূলত chompইনপুটটি মনে করিয়েছিল, নির্দিষ্ট 0 মান পরীক্ষার জন্য প্রয়োজনীয়তা বাদ দিয়ে। আপনি কী বলতে চাইছেন তা সম্পর্কে আমি নিশ্চিত নই $n=<>;$n==0- আমার গল্ফের এটি নেই এবং আমি ইনপুট হিসাবে ইনপুট = 0 কেস হ্যান্ডেল করে map{}()দিচ্ছি, আমি নিশ্চিত না যে এটি কীভাবে প্রযোজ্য হবে? যাইহোক, আপনার মতামত নেওয়া এবং $=আমার পরিবর্তনশীল হিসাবে ব্যবহার করে , এটি 117 পার্বাইটে নেমে গেছে। অনেক ধন্যবাদ!
ফিলিপো

মোটেই কোন সমস্যা নেই! খুশি হলাম সাহায্য করতে! আমার অর্থ হ'ল $n=<>;আপনার শুরুতে এবং তারপরে $n==0পিছনে ছিল map{}...তাই আমার মনে হয় আপনি চেকটি দেখতে পেলেন ($n=<>)==0তবে আপনি যদি এর $=পরিবর্তে ব্যবহার করছেন তবে আপনি এটি আরও সঙ্কুচিত করতে সক্ষম হবেন! আমি সবসময় যা ভুলবেন $-বা $=তাই আমি এটা উল্লেখ এবং ভুল হতে চাইনি নেতিবাচক হতে পারে না! :)
ডম হেস্টিংস

3

পিপ, 74 + 1 = 75 বাইট

কমান্ড-লাইন আর্গুমেন্ট হিসাবে বয়সকে নিয়ে যায়। -nপতাকা প্রয়োজন ।

Y^"-~-"a?a<0?yX3(s.^"$|")XaALyX2*a+1"Congratulations on your new baby! :D"

পাইপের জন্য গিথুব সংগ্রহস্থল

কমান্ড-লাইন আর্গুমেন্ট সংরক্ষণ করা হয় a। আমরা "-~-"অক্ষরের তালিকায় বিভক্ত হয়ে Yএটিকে ভেরিয়েবলের মধ্যে এঙ্ক করি y। প্রোগ্রামটির বাকি অংশগুলি একটি বৃহত তিনটি প্রকাশের মত প্রকাশ:

  • a?
    তাহলে atruthy (অর্থাত শূন্য না):
    • a<0?yX3
      যদি aনেতিবাচক yহয় তবে প্রতিটি উপাদানটি 3 বার পুনরাবৃত্তি করুন:["---";"~~~";"---"]
    • অন্য ( aইতিবাচক):
      • (s.^"$|")Xa
        বিভক্ত "$|"অক্ষরের একটি তালিকায়, শুরুতে যোগ একটি স্থান ( sপ্রতিটি), এবং প্রতিটি ফলে উপাদান পুনরাবৃত্তি aবার
      • yX2*a+1
        y 2*a+1সময়ের প্রতিটি উপাদান পুনরাবৃত্তি
      • AL
        দুটি তালিকা যুক্ত করুন
  • অন্যটি ( aশূন্য), অভিনন্দনের স্ট্রিংটি ফিরিয়ে দিন

প্রোগ্রামের শেষে, -nপতাকাটি নিশ্চিত করে যে তালিকা পৃথক লাইনে উপাদানগুলির সাথে মুদ্রিত করা হবে, যাতে সঠিকভাবে স্তরযুক্ত কেক প্রদর্শিত হবে display

একটি ইনপুট জন্য পদক্ষেপ এখানে 2:

Candles
["$";"|"]
[" $";" |"]
[" $ $";" | |"]

Cake
["-";"~";"-"]
["-----";"~~~~~";"-----"]

Put it together
[" $ $";" | |";"-----";"~~~~~";"-----"]

Final output
 $ $
 | |
-----
~~~~~
-----

শুভ জন্মদিন!


2

পার্ল, 144 বাইট

143 বাইট কোড, প্লাস -nস্টিডিন ক্যাপচারের জন্য একটি অতিরিক্ত বাইট

if($_!=0){print$_>0?" \$"x$_.$/." |"x$_.$/:""x($_=1);$_=$_*2+1;print"-"x$_.$/."~"x$_.$/."-"x$_;exit}print"Congratulations on your new baby! :D"

1
print"-~-"=~s!.!$&x($_*2+1).$/!gerপিষ্টক জন্য?
manatwork

আপনি যদি -p$_=$_!=0?($_>0?' $'x$_.$/." |"x$_:""x($_=1))."-~-"=~s!.!$/.$&x($_*2+1)!ger:"Congratulations on your new baby! :D"
এইটিতে

2

স্পেসবিএএস, 164

নতুন লাইনে যাওয়ার জন্য অ্যাস্টোস্ট্রো শর্টকাট ব্যবহার করে

INPUT n: IF n=0 THEN PRINT "Congratulations on your new baby! :D" ELSE IF n<0 THEN PRINT "---"'"~~~"'"---" ELSE PRINT " $"*n'" |"*n'"-";"--"*n'"~";"~~"*n'"-";"--"*n

সহজ পড়ার জন্য ফর্ম্যাট করা হয়েছে

INPUT n
IF n=0 THEN PRINT "Congratulations on your new baby! :D" 
ELSE IF n<0 THEN PRINT "---"'"~~~"'"---" 
ELSE PRINT " $"*n'" |"*n'"-";"--"*n'"~";"~~"*n'"-";"--"*n

2

পাইথন 3, 169 বাইট

n=int(input())
m=max(n*2+1,3)
f=' {}'*n+'\n'+' {}'*n+'\n'+'-'*m+'\n'+'~'*m+'\n'+'-'*m
if n==0:f='Congratulations on your new baby! :D'
print(f.format(*['$']*n+['|']*n))

2

জুলিয়া, 143 বাইট

n=int(readline())
p=println
l="\n"
n>0&&p(" \$"^n*l*" |"^n)
d=2(n<0?1:n)+1
p(d>1?"-"^d*l*"~"^d*l*"-"^d:"Congratulations on your new baby! :D")

অনেকটাই অকপট. Ungolfed:

# Read n from STDIN and convert to an integer
n = int(readline())

# Print the candles for positive n
n > 0 && println(" \$"^n * "\n" * " |"^n)

# Define d as the width of the cake
d = 2(n < 0 ? 1 : n) + 1

# Newborns can't eat cake
if d > 1
    println("-"^d * "\n" * "~"^d * "\n" * "-"^d)
else
    println("Congratulations on your new baby! :D")
end

2

লুয়া, 299 বাইট

a=0+io.read() b=string.rep p=print if a==0 then p("Congratulations on your new baby! :D") else p(b(" ",a)..b("$ ",a)..("\n")..b(" ",a)..b("| ",a)) if a<0 or a==1 then p("---\n~~~\n---") else p(b(" ",a-1).."-"..b("-",2*a).."\n"..b(" ",a-1).."~"..b("~",2*a).."\n"..b(" ",a-1).."-"..b("-",2*a))end end

1
পিপিসিজিতে আপনাকে স্বাগতম! আপনার কোডটি যেমন দাঁড়িয়ে আছে তেমন একটি ত্রুটি বলে মনে হচ্ছে ( attempt to compare string with number), তবে আমার জন্য এটি সংশোধন করার 0+আগে যুক্ত করা io.read()। আপনি একক-অক্ষর ভেরিয়েবল বরাদ্দ করে printএবং বেশ কয়েকটি বাইট সংরক্ষণ করতে পারেন string.rep
DLosc

@ ডলোকস ধন্যবাদ ভাল ধারণা :) এবং হ্যাঁ আপনি এই বিষয়ে ত্রুটির সাথে ঠিকই ছিলেন
ফাবিএফ

2

গণিত, 164 বাইট

অতিরিক্ত 15 টি অক্ষর যুক্ত করে এন <0 এর জন্য মোমবাতি-কম কেক সম্পূর্ণরূপে মিস করেছে

r[a_,b_]:=StringRepeat[a,Abs@b];c=" $ ";t="---";m="~~~";f[n_]:=If[n>0,r[c,n]~~"\n",""]~~r[t,n]~~"\n"~~r[m,n]~~"\n"~~r[t,n];f[0]:="Congratulations on your new baby! :D"

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

ধন্যবাদ @ বেটাডেচে আমি একটি দ্রুত সংস্করণ পেয়ে যাচ্ছিলাম .. এখন কমিয়ে দিচ্ছি। চিয়ার্স: ডি
মার্টিন জন হ্যাডলি

সমস্যা নেই. দেখতে বেশ ভাল লাগছে :)

2

পিবি , 567 বাইট

^w[B=45]{vb[-1]^b[0]>w[B!0]{t[B]b[0]<b[T]>>}<}w[B!0]{>}b[65]w[X!0]{<b[B-48]}>w[B!65]{t[B]<t[B*10+T]b[0]>b[T]>}b[0]<t[B]b[0]<[X]>b[T]<b[T]vw[B=0]{b[1]}t[B]b[0]^b[B*T]vw[X!3]{b[45]vb[126]vb[45]^^>}^<<t[B]<b[B+T]w[B!0]{<vw[X!3]{b[0]vb[0]vb[0]^^>}^<<t[B]vvw[T!0]{b[124]^b[36]v>>t[T-1]}v<w[X!-1]{b[45]vb[126]vb[45]^^<}}^[Y]^<[X]>w[B=0]{>vvw[X!-1]{b[0]vb[0]^<}^>}t[111]b[67]>b[T]>b[110]>b[103]>b[114]>b[97]>b[116]>b[117]>b[108]>b[97]>b[116]>b[105]>b[T]>b[110]>b[115]>>b[T]>b[110]>>b[121]>b[T]>b[117]>b[114]>>b[110]>b[101]>b[119]>>b[98]>b[97]>b[98]>b[121]>b[33]>>b[58]>b[68]

আমার কিছু আক্ষেপ আছে

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

এটি পিবিআইয়ের "ওয়াচ" মোডে চালানোর চেষ্টা করবেন না, আপনি যদি কোনও নেতিবাচক ইনপুট করেন তবে এটি মুদ্রণের চেষ্টা করলে ক্রাশ হবে chr(-1)

প্রোগ্রামটি লেখার সময় আমি নোট নিয়েছি যেখানে এখানে বর্ণিত সংস্করণ সংস্করণ রয়েছে। আপনি যদি এটি কীভাবে কাজ করে তা আরও ভালভাবে বুঝতে চান ... সৌভাগ্য, এবং আপনি যদি এটি খুঁজে বের করেন তবে আমাকে জানান।

# parse number

^w[B=45]{vb[-1]^b[0]>     # if negative, put a -1 at (0, 0)
    w[B!0]{t[B]b[0]<b[T]>>} # move all digits left
<}
w[B!0]{>}b[65]        # put an "A" at the end of the number
w[X!0]{<b[B-48]}      # subtract 48 from each byte to get the digits of the number
>w[B!65]{             # while there's no "A" at the second digit
    t[B]<t[B*10+T]      # set T to (first digit * 10) + second digit
    b[0]                # destroy first digit
    >b[T]               # override 2nd digit with T
    >}                  # point at second digit to restart loop
b[0]<t[B]b[0]<[X]>b[T]<b[T] # move number to (0, -1) and (1, -1)
vw[B=0]{b[1]}t[B]b[0]^b[B*T] # multiply (0, -1) by -1 if required
vw[X!3]{b[45]vb[126]vb[45]^^>} # draw the negative cake
^<<t[B]<b[B+T]w[B!0]{ # if it's positive
    <vw[X!3]{b[0]vb[0]vb[0]^^>} # erase the cake
    ^<<t[B]vvw[T!0]{b[124]^b[36]v>>t[T-1]} # draw the candles
    v<w[X!-1]{b[45]vb[126]vb[45]^^<}       # draw the cake
}^[Y]^<[X]>w[B=0]{>vvw[X!-1]{b[0]vb[0]^<}^>} # erase the part of the cake that would show up
# hardcoded string for input 0
t[111]b[67]>b[T]>b[110]>b[103]>b[114]>b[97]>b[116]>b[117]>b[108]>b[97]>b[116]>b[105]>b[T]>b[110]>b[115]>>b[T]>b[110]>>b[121]>b[T]>b[117]>b[114]>>b[110]>b[101]>b[119]>>b[98]>b[97]>b[98]>b[121]>b[33]>>b[58]>b[68]

2

স্ক্রিপ্টসিএস (সি # স্ক্রিপ্ট), 221 বাইট

স্পষ্টতই এটি কোনও পুরস্কার জিতবে না, তবে ...

var n=int.Parse(Env.ScriptArgs[0]);Console.WriteLine(n==0?"Congratulations on your new baby! :D":string.Join("\n",new[]{" $"," |","-","~","-"}.Select((s,i)=>string.Concat(Enumerable.Repeat(s,i>1?(n>0?n:1)*2+1:n>0?n:0)))))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.