এটা কি বছর?


9

এটি ডিসেম্বর 2014, এবং 2015 প্রায় শুরু হয়েছে। তবে, এটি উপস্থিত সবাই উপলব্ধি করতে পারে না বলে মনে হয়।

জন: "২০০৯ নিশ্চিতভাবেই একটি দীর্ঘ বছর হয়েছে" |  গারফিল্ড পঞ্জিকা তাকান |  গারফিল্ড: "আমরা একটি নতুন ক্যালেন্ডার পেতে চাই"

কিন্তু পিপিসিগির লোকেরা উদ্ধার করতে আসে!

ইনপুট

আপনার প্রোগ্রামটিকে একটি প্রাচীরের মতো গ্রিড দেওয়া হয়েছে, যেখানে ডিসেম্বরের মাসগুলি নভেম্বর ও জানুয়ারীর চেয়ে আলাদা থাকে। প্রতি সপ্তাহে রবিবার থেকে শুরু হয়ে শনিবার শেষ হয়।

মাসের মধ্যে দিনগুলি ক দ্বারা প্রতিনিধিত্ব করা হয় #। মাসের বাইরে পড়া দিনগুলিকে একটি (স্পেস, এএসসিআইআই কোড 32) দ্বারা প্রতিনিধিত্ব করা হয় । প্রতি সপ্তাহে একটি পৃথক লাইনে আছে। রেখাগুলি একটি নতুন লাইন অক্ষর দ্বারা পৃথক করা হয় ( \n)। আপনার প্রোগ্রামটির ইনপুট শেষে একটি নতুন লাইন বাদ দেওয়া বা অন্তর্ভুক্তির প্রয়োজন হতে পারে।

উদাহরণস্বরূপ, এটি ডিসেম্বর ২০০৯ এর ইনপুট:

  #####
#######
#######
#######
#####  

পঞ্জিকা সর্বদা ডিসেম্বর মাসের।

কার্য

ইনপুট দেওয়া হয়েছে, আপনাকে অবশ্যই ক্যালেন্ডারের সাথে সম্পর্কিত বছরটি খুঁজে বের করতে হবে। যেহেতু একাধিক বছর রয়েছে যার জন্য একটি ক্যালেন্ডার মেলে, আপনাকে অবশ্যই অবশ্যই ২০১৫ (2015 এর আগে) ফিরে আসতে হবে যা 2015 এর নিকটতমতম (

আপনার প্রোগ্রামে অবশ্যই অবশ্যই ২০১৫ সালের জন্য সঠিক আউটপুট তৈরি করতে হবে, ডিসেম্বরের ক্যালেন্ডার লেআউট রয়েছে এমনগুলি বাদ দিয়ে, যা ২০১৫ এর আরও কাছাকাছি (২০১৫ এর আগে) এর সমান।

যদি বছরটি <2014 হয় তবে আপনার অবশ্যই 2014 সালের বছরের পার্থক্যটি গণনা করতে হবে For উদাহরণস্বরূপ, 2012 এর জন্য পার্থক্য 2

আউটপুট

আপনার প্রোগ্রামের আউটপুট অবশ্যই হবে:

  • পাঠ্য: Your calendar is for <year>.(দ্রষ্টব্য: যেহেতু এটি মূলত "ক্যালেন্ডার" হিসাবে বানানযুক্ত, আমি সেই বানানটিও গ্রহণ করব।)
  • একটি নতুন লাইন অনুসরণ ( \nবা \r\n)।
  • পাঠ্য অনুসরণ: It's almost 2015.
  • যদি বছরটি <2014 হয় তবে You're <difference> years behind.এটি অবশ্যই পাঠ্য অনুসরণ করবে: এটি অবশ্যই একটি পৃথক লাইনে থাকতে হবে।
  • একটি নতুন লাইন অনুসরণ ( \nবা \r\n)।
  • পাঠ্য অনুসরণ: Go buy a new calendar!
  • Ptionচ্ছিকভাবে একটি নতুন লাইন ( \nবা \r\n) এর পরে।

বিধি

  • আপনি ক্যালেন্ডারটি কমান্ড-লাইন আর্গুমেন্ট হিসাবে গ্রহণ করতে চান কিনা yourprogram.exe <calendar>বা ব্যবহারকারী ইনপুটটির জন্য প্রম্পট চয়ন করতে পারেন ।
  • আপনি ধরে নিতে পারেন আপনার প্রোগ্রামটি অবৈধ ইনপুট গ্রহণ করবে না। অবৈধ ইনপুটটিতে ক্যালেন্ডার লেআউট রয়েছে যার জন্য কোনও বছর নেই exists
  • সংক্ষিপ্ততম কোড (কোনও বাইটে, কোনও ভাষায়) জিতে যায়।
  • কোনও অ-মানক কমান্ড-লাইন আর্গুমেন্ট (আর্গুমেন্ট যা সাধারণত স্ক্রিপ্ট চালানোর প্রয়োজন হয় না) মোট অক্ষর গণনার দিকে গণনা করে।

  • আপনার প্রোগ্রামটি অবশ্যই না করে:

    • যে কোনও বাহ্যিক সংস্থান উপর নির্ভর করে।
    • একটি নির্দিষ্ট ফাইলের নাম থাকার উপর নির্ভর করে।
    • প্রয়োজনীয় আউটপুট ছাড়া অন্য কিছু আউটপুট।
    • দৌড়াতে ব্যতিক্রমী দীর্ঘ সময় নিন। যদি আপনার প্রোগ্রামটি একজন গড় বাড়ির ব্যবহারকারীর কম্পিউটারে এক মিনিটেরও বেশি সময় ধরে চলে তবে এটি অবৈধ।
  • আপনার প্রোগ্রামটি অবশ্যই এমন একটি প্রোগ্রামিং ভাষায় লেখা উচিত নয় যার জন্য এই চ্যালেঞ্জ পোস্ট হওয়ার আগে প্রকাশ্যে উপলব্ধ সংকলক / দোভাষীর উপস্থিতি ছিল না।

উদাহরণ

ইনপুট:

  #####
#######
#######
#######
#####  

আউটপুট:

Your calendar is for 2009.
It's almost 2015.
You're 5 years behind.
Go buy a new calendar!

ইনপুট:

 ######
#######
#######
#######
####   

আউটপুট:

Your calendar is for 2014.
It's almost 2015.
Go buy a new calendar!

ইনপুট:

      #
#######
#######
#######
#######
##     

আউটপুট:

Your calendar is for 2012.
It's almost 2015.
You're 2 years behind.
Go buy a new calendar!

ইসস। 2014 টি ইউটিসিতে শেষ হওয়ার 6 সেকেন্ড আগে এটি পোস্ট করার জন্য পরিচালিত (যা এসই দ্বারা ব্যবহৃত হয়)। এছাড়াও, শুভ নববর্ষ সবাই!
ব্যবহারকারী 2428118

বলুন, অনুমানমূলকভাবে, যে 2016 এবং 2009 এর একই আকার রয়েছে। তাহলে নিকটতম কোনটি? (উদাহরণস্বরূপ, আপনি কি চূড়ান্ত দূরত্বের নিকটতম, বা নিকটতম তবে 2015 এর আগের কথা বলতে চান?)
Sp3000

@ এসপি 3000 পরেরটি আমি স্পষ্ট করতে পোস্ট সম্পাদনা করেছি।
ব্যবহারকারী 2428118

2
আউটপুটে দুটি পৃথক উপায়ে ক্যালেন্ডার বানান করা কি সত্যিই প্রয়োজনীয়?
515

3
"আপনি কমান্ড-লাইন আর্গুমেন্ট হিসাবে ভগ্নাংশটি পেতে চান কিনা তা চয়ন করতে পারেন (উদাঃ yourprogram.exe 2/5)" ... কী?
feersum

উত্তর:


2

সিজেম, 126 বাইট

"Your calendar is for "2e3q'##"DE9AB6C"=~+".
It's almost "2015_(".
You're 5 years behind"9@5$-:TtTg*".
Go buy a new calendar!"

3

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

s=input();i=42157313>>s.index("#")*4&15;print("Your calendar is for %d.\nIt's almost 2015.\n%sGo buy a new calendar!"%(2014-i,(i>0)*("You're %d year%s behind.\n"%(i,"s"*(i>1)))))

প্রথমটির অবস্থানের উপর ভিত্তি করে একটি সন্ধানের সহজ সারণী #

সম্প্রসারিত:

s=input()
i=42157313>>s.index("#")*4&15
print("Your calendar is for %d.\nIt's almost 2015.\n%sGo buy a new calendar!"\
    %(2014-i,(i>0)*("You're %d year%s behind.\n"%(i,"s"*(i>1)))))

2

পার্ল - 187

$ARGV[0]=~/^( *)/;my@a=(7,8,3..5,0,6);my$b=($a[length$1]+2006);print"Your calendar is for $b.\nIt's almost 2015.\n".($b<2014?"You're ".2014-$b." years behind.\nGo buy a new calendar!":"")

"।" এবং "-" এর একই অপারেটর অগ্রাধিকার রয়েছে, সুতরাং আপনার "2014- $ বি" এর আশেপাশে প্রথম বন্ধনী প্রয়োজন।
নটকি


@ নটকি আঃ, আমি ভেবেছিলাম যে আমি এটি ইতিমধ্যে ঠিক করেছি।
কেএসএফটি

2

পার্ল 5: 137 143

#!perl -p
$_="Your calendar is for ".(2014-($%=w834506&s/#/?/r)).".
It's almost 2015.
".("You're $% years behind.
")x!!$%."Go buy a new calendar!"

পূর্ববর্তী পদ্ধতি:

#!perl -p
/#/;$_="Your calendar is for ".(2014-($b=1558279/9**"@-"%9)).".
It's almost 2015.
".("You're $b years behind.
")x!!$b."Go buy a new calendar!"

স্ট্যান্ডার্ড ইনপুট-এ ক্যালেন্ডার (কেবলমাত্র প্রথম লাইন অবশ্যই উল্লেখযোগ্য)

perl 2014.pl <<<" ######"

2

সি # 235

minified:

class P{static void Main(string[] a){var y=new[]{1,0,5,4,3,8,2}[a[0].IndexOf('#')];var z=2014-y;System.Console.Write("Your calendar is for "+z+"\nIt's almost 2015.\n"+(z>0?"You're "+z+" years behind.":"")+"\nGo buy a new calendar!");}}

Ungolfed

class P
{
    static void Main(string[] a)
    {
        var y = new[]{1,0,5,4,3,8,2}[a[0].IndexOf('#')];
        var z = 2014-y; 
        System.Console.Write("Your calendar is for "+z+"\nIt's almost 2015.\n"+(z>0 ? "You're "+z+" years behind.":"")+"\nGo buy a new calendar!");
    }
}

ঠিক আছে, ভাষাটি ভারবজ :)


1
আপনার ক্লাস এবং মেইন জনসাধারণ হতে হবে না। এছাড়াও, আপনি সহজেই নাম পরিবর্তন করতে পারেন Programথেকে P। এটি আপনাকে কিছু অক্ষর সংরক্ষণ করতে হবে :)
প্রোগ্রামফক্স

সত্যিই 20 টি চরিত্র, ধন্যবাদ :)
ম্যানুয়েল শোয়েগার্ট

1
কীভাবে yগণনা করা হয় তা পরিবর্তন করে আপনি কয়েকটি অক্ষর সংরক্ষণ করতে পারেন, আপনি যদি একটি স্ট্রিং সূচী করেন তবে অ্যারের বর্ণনা দেওয়ার জন্য প্রয়োজনীয় সিনট্যাক্সটি সংরক্ষণ করতে পারেন (যেমন var y = "1054382"[index]-48( 0ASCII 48))। আরও সাশ্রয়ের জন্য গণনার yমধ্যেও অন্তর্ভুক্ত হতে পারে z
ভিজ্যুমেলন

2

সি #, 384 , 363 325 বাইট

সি # সময়, দয়া করে আমাকে বলুন আমি কোনও নিয়ম ইত্যাদি থেকে বাদ পড়েছি কিনা etc.

string a(string s){var l=s.IndexOf('#');var x=(DayOfWeek)Enum.Parse(typeof(DayOfWeek),""+l);l=1;for(;;){var y=DateTime.Now.Year-l;var t=(new DateTime(y,12,1).DayOfWeek==x)?"Your calendar is for "+y+"\nIt's almost 2015\n"+((y < 2014)?"You're "+--l+"years behind\n":"")+"Go buy a new calendar":null;if(t!=null){return t;}l++;}}

ইনপুট

" ######" 
"#######"  
"#######" 
"#######" 
"#####  "

আউটপুট

"Your calendar is for 2014
 It's almost 2015
 Go buy a new calendar

ইনপুট 2

"  #####"
"#######"  
"#######"
"#######" 
"#####  "

আউটপুট 2

"Your calendar is for 2009
 It's almost 2015
 You're 5 years behind
 Go buy a new calendar"

সম্পাদনা: আপডেট হয়েছে, কিছু বাইট অপসারণ করতে পরিচালিত


বিরামচিহ্নগুলি আপনার আউটপুট থেকে অনুপস্থিত।
টাইটাস

2

জাভা, 243 বাইট

এটি একটি ভার্ভোজ ভাষা :-)

class A{public static void main(String[]s){int y=2005+new int[]{8,9,4,5,0,6,7}[s[0].indexOf("#")],d=2014-y;System.out.print("Your calendar is for "+y+".\nIt's almost 2015.\n"+(d>0?"You're "+d+" years behind.\n":"")+"Go buy a new calendar!");}}

Unminified

class A {
    public static void main(String[] s) {
        int y = 2005 + new int[]{8,9,4,5,0,6,7}[s[0].indexOf("#")],
            d = 2014 - y;
        System.out.print("Your calendar is for " + y + ".\nIt's almost 2015.\n"
            + (d > 0 ? "You're " + d + " years behind.\n" : "") + "Go buy a new calendar!");
    }
}

1

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

আমি এখনও ইএস 6 লিখতে অভ্যস্ত নই যাতে কোনও পরামর্শই প্রশংসিত হয়:

লুক টেবিল, 170 বাইট

a=(i)=>{y=[8,9,4,5,0,6,7][i.search('#')]+2005,f=2014-y;return`Your calendar is for ${y}.\nIt's almost 2015.\n${f?`You're ${f} years behind.\n`:''}Go buy a new calendar!`}

আসল, 199 বাইট

a=i=>{y=2015,f=-1;do{f++;d=new Date(`${y--}-12-01`)}while(d.getDay()!=i.search('#'))return`Your calendar is for ${y}.\nIt's almost 2015.\n${f?`You're ${f} years behind.\n`:''}Go buy a new calendar!`}

Unminified

a = i => {
    y = 2015;
    f = -1;
    do {
        f++;
        d = new Date(`${y--}-12-01`);
    } while (d.getDay() != i.search('#'));
    return `Your calendar is for ${y}.\nIt's almost 2015.\n${f ? `You're ${f} years behind.\n` : ''}Go buy a new calendar!`;
}

জাভাস্ক্রিপ্ট (ES5), 212 182 বাইট

আমি নীচে আমার মূল সংস্করণটিও অন্তর্ভুক্ত করেছি

লুক আপ অ্যারে, 182 বাইট

function a(i){y=[8,9,4,5,0,6,7][i.indexOf('#')]+2005,f=2014-y;return"Your calendar is for "+y+".\nIt's almost 2015.\n"+(f?"You're "+f+" years behind.\n":'')+"Go buy a new calendar!"}

Unminified

function a(i) {
    y = [8,9,4,5,0,6,7][i.indexOf('#')] + 2005;
    f = 2014 - y;
    return "Your calendar is for " + y + ".\nIt's almost 2015.\n" + (f ? "You're " + f + " years behind.\n" : '') + "Go buy a new calendar!";
}

আসল, 212 বাইট

function a(i){y=2015,f=-1;do{f++;d=new Date(y--+"-12-01")}while(d.getDay()!=i.indexOf('#'));return"Your calendar is for "+y+".\nIt's almost 2015.\n"+(f?"You're "+f+" years behind.\n":'')+"Go buy a new calendar!"}

Unminified

function a(i) {
    y = 2015;
    f = -1;
    do {
        f++;
        d = new Date(y-- + "-12-01");
    } while (d.getDay() != i.indexOf('#'));
    return "Your calendar is for "+y+".\nIt's almost 2015.\n" + (f ? "You're "+f+" years behind.\n" : '') + "Go buy a new calendar!";
}

1

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

আমার পিএইচপি উত্তরের অনুরূপ, তবে কফিস্ক্রিপ্টের do-whileলুপ নেই বা এটিতে একটি ছোট টর্নারি অপারেটরও নেই:

a=(i)->y=2015;f=-1;loop(f++;d=new Date y--+"-12-01";break if d.getDay()==i.indexOf '#');"Your calendar is for "+y+".\nIt's almost 2015.\n"+(if f then"You're "+f+" years behind.\n"else'')+'Go buy a new calendar!'

Unminifed

a = (i)->
    y = 2015
    f = -1
    loop
        f++
        d = new Date y-- + "-12-01"
        break if d.getDay() == i.indexOf '#'
    "Your calendar is for " + y + ".\nIt's almost 2015.\n" + (if f then "You're " + f + " years behind.\n" else '') + 'Go buy a new calendar!'

দেখার সারণী ব্যবহার করে সংক্ষিপ্ত:

a=(i)->y=[8,9,4,5,0,6,7][i.indexOf '#']+2005;f=2014-y;"Your calendar is for "+y+".\nIt's almost 2015.\n"+(if f then"You're "+f+" years behind.\n"else'')+'Go buy a new calendar!'

1

পিএইচপি, 215 181 বাইট

লুক টেবিল, 181 বাইট

সংক্ষিপ্ত অ্যারে সিনট্যাক্সের কারণে, কেবলমাত্র PHP 5.4+ এ কাজ করে:

function a($i){$y=2005+[8,9,4,5,0,6,7][strpos($i,'#')];$f=2014-$y;echo "Your calendar is for $y.\nIt's almost 2015.\n".($f?"You're $f years behind.\n":'')."Go buy a new calendar!";}

Unminified

function a($input) {
    $year = 2005 + [8,9,4,5,0,6,7][strpos($input, '#')];
    $difference = 2014 - $year;
    echo "Your calendar is for $year.\nIt's almost 2015.\n" . ($difference ? "You're $difference years behind.\n" : '') . "Go buy a new calendar!";
}

আসল, 215 বাইট

পিএইচপি 5 এর বেশিরভাগ (সমস্ত না থাকলে) সংস্করণ দিয়ে কাজ করে:

<?function a($c){$y=2015;$f=-1;do{$f++;$d=strtotime(--$y."-12-1");}while(date(w,$d)!=strpos($c,'#'));echo"Your calendar is for $y.\nIt's almost 2015.\n".($f?"You're $f years behind.\n":'')."Go buy a new calendar!";}

Unminified

<?php

function a($input) {
    $year = 2015;
    $difference = -1;
    do {
        $difference++;
        $date = strtotime(--$year . "-12-1");
    } while (date('w', $date) != strpos($input, '#'));
    echo "Your calendar is for $year.\nIt's almost 2015.\n" . ($difference ? "You're $difference years behind.\n" : '') . "Go buy a new calendar!";
}

1

রুবি, 174

def a(i)y=2005+[8,9,4,5,0,6,7][i.index('#')];d=2014-y;puts"Your calendar is for #{y}.\nIt's almost 2015.\n"+(d>0?"You're #{d} years behind.\n":'')+"Go buy a new calendar!"end

1

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

ক্লোজিং ট্যাগের পিছনে দুটি লাইনব্রেক কারণ পিএইচপি প্রথমটিকে উপেক্ষা করবে

Your calendar is for <?=2014-$y=_1054382[1+strspn($argv[1]," ")],".
It´s almost 2015.",$y?"
You're $y years behind.":""?>

Go buy a new calendar!

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়;

আক্ষরিক স্ট্রিংকে ইনডেক্স করার জন্য পিএইচপি 5.6 (18 ই ডিসেম্বর 2014 প্রকাশিত) বা তার পরে প্রয়োজন।


1

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

DEF C C
Y=VAL("2834501"[INSTR(C,"#")])?"Your calender is for ";2014-Y;".
?"It's almost 2015.
IF Y THEN?"You're ";Y;" years behind.
?"Go buy a new calendar!
END

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