এটা কি বড়দিন?


33

চ্যালেঞ্জ

ক্রিসমাস হল যে দেওয়া:

  • ডিসেম্বর
  • মাস 12
  • 25 দিন

প্রতি বছর, আজকের তারিখ নির্ধারণ করুন এবং আজ ক্রিসমাস কিনা। এটি যদি ক্রিসমাস হয় তবে আপনার অবশ্যই মুদ্রণ করা উচিত "It's Christmas"। যদি এটি ক্রিসমাস না হয় তবে আপনাকে অবশ্যই কোনওভাবে ক্রিসমাস পর্যন্ত অপেক্ষা করতে হবে এবং তারপরে মুদ্রণ করতে হবে "It's Christmas"

উদাহরণ

থেকে এই স্ট্যাক ওভারফ্লো প্রশ্ন

import time
while time.strftime("%b, %d", time.localtime()) != "Dec, 25":
    time.sleep(60)
print "It's Christmas"

১১৫ টি চরিত্রে পাইথন

বিধি

এখানে বিধি রয়েছে:

  • ধরে নিন যে কম্পিউটারের ঘড়িটি সর্বদা সঠিক।
  • আপনার কোডটি যে কোনও সময় শুরু করতে সক্ষম হতে হবে।
  • আপনার কোড অবশ্যই "It's Christmas"ক্রিসমাসে মুদ্রণ করা উচিত ।
  • লুপিং অবশ্যই প্রয়োজনীয় নয়, তবে একবার আপনার কোডটি প্রিন্ট না হওয়া অবধি বন্ধ হওয়া উচিত নয়।
  • সংক্ষিপ্ততম কোড জিতেছে।

আমি ভেবেছিলাম এই পোস্টটি পড়ার আগে ইনপুটটি জুলিয়ান তারিখে রয়েছে
মিং-টাং

উত্তর:



143

বাশ, 39

যারা কেবল অপেক্ষা করতে পারবেন না তাদের জন্য:

sudo date 12250000
echo It\'s Christmas

এটি সমস্ত বিধি অনুসরণ করে, বিশেষত প্রথমটি।


11
চালাক। আমি যা বোঝাতে চাইছি তা নয়, ধূর্ত চালাক।
প্যাট্রিক পেরিনি 21

8
"... এবং যদি কম্পিউটারের ঘড়িটি সর্বদা যথাযথ না হয় তবে এটি তৈরি করুন Good" ভাল শো!
জেবি

13
আপনি মূল হলে আপনি 5 টি অক্ষর সংরক্ষণ করতে পারেন। : ডি
উগ

29

ইউনিক্স, 39 বাইট

echo{,} "It\'s christmas"|at -t12252359

ডেনিসের সাহায্যে, এর জন্য ধন্যবাদ।


এটি লঙ্ঘন করে »লুপিং অবশ্যই প্রয়োজনীয় নয়, তবে একবার আপনার কোডটি প্রিন্ট না হওয়া অবধি বন্ধ হওয়া উচিত নয় though, যদিও।
জোয়

আমি আপনার সমালোচনা বুঝতে পারি না। আপনি কি দাবি করেন যে এটি লুপিং? এটা কি ছাপার আগেই থামছে?
ব্যবহারকারী অজানা

2
ব্যবহার করে echo{,} "It\'s Christmas"|at -t12252359, এটি গৃহীত উত্তরের চেয়ে ছোট। (ব্যাকস্ল্যাশটি উপায় দ্বারা আবশ্যক))
ডেনিস

1
@ ডেনিস: ব্রেস প্রসারণের দুর্দান্ত ব্যবহার।
জোয় অ্যাডামস

18

পাওয়ারশেল, 45 46 টি চর

for(;(date).date-ne'12/25'){}"It's Christmas"

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

এটি লোকাল-অজ্ঞাতস্রোক্তও। এই আরও কমাতে একটি সুন্দর কৌশল জন্য জেকুল ধন্যবাদ।

নিয়মগুলি কিছুটা আপত্তিজনকভাবে ব্যবহার করা হচ্ছে, 45 টি অক্ষর

for(){"It's Christmas"*((date)-like'12/25*')}

এটি ক্রিসমাস না হওয়া পর্যন্ত খালি লাইনগুলি মুদ্রণ করবে, যার উপর এটি "এটি ক্রিসমাস" মুদ্রণ করবে।

এটি ...

  • ... যে কোনও সময় শুরু করা যেতে পারে।
  • ... বড়দিনে "এটি ক্রিসমাস" প্রিন্ট করে। বেশ কয়েকবার. সারা দিন ধরে। (এটি কতবার মুদ্রিত হতে পারে সে সম্পর্কে বিধিগুলি কিছুই বলেনি))
  • ... ক্রিসমাস নন-এ "ইট ক্রিসমাস" মুদ্রণ করে না (যদিও এটি সেই ক্ষেত্রে একটি ফাঁকা লাইন প্রিন্ট করে; অন্য চরিত্রের ত্যাগ দ্বারা সংশোধন করা যায়, তবে তারপরে উপরের আরও বুদ্ধিমান সমাধানের তুলনায় এটি কিছুই লাভ করে না)।
  • ... কখনও থামবে না (এটি "এটি ক্রিসমাস" ছাপার পরেও নয় তবে অবশ্যই আগে নেই)

2
(; (তারিখ) .date-Ne "12/25") {} "এটা এর ক্রিসমাস" # 45 অক্ষর জন্য
Jaykul

জাইকুল: ধন্যবাদ ... এটাই এমন কিছু যা আমি কখনও কাজ করার কথা ভাবিনি।
জোয়

"আপত্তিজনক" স্ক্রিপ্টটি -matchঅক্ষরগুলির কোনও লাভ / ক্ষতি না করে ওয়াইল্ডকার্ড ছাড়াই ব্যবহার করতে এবং করতে পারে ।
ইসজি

আপনি এখন অপব্যবহারটি মুছে ফেলতে পারেন, এটি বিনা পাকা।
এরিক আউটগলফার

@ এরিকথগল্ফার: কীভাবে? এটি এখনও একটি আকর্ষণীয় বিকল্প পদ্ধতির প্রস্তাব দেয়, যদিও এটি কম নয়।
জোয়ি

13

পাইথন (36 টি অক্ষর)

নিয়মগুলি অপব্যবহারের চেতনায়:

  • অবশ্যই বড়দিনে "এটি ক্রিসমাস" মুদ্রণ করে

  • যদি এটি ক্রিসমাস না হয় তবে "ইট ক্রিসমাস" মুদ্রণ করে সময়টি পার করুন

    while True:
        print "It's Christmas"
    

2
29 বাইট: while 1:print"It's Christmas"
এরিক আউটগলফার

11

পোস্টস্ক্রিপ্ট, 90

(%Calendar%)currentdevparams begin{Month 12 eq Day 25 eq and{exit}if}loop(It's Christmas)=

প্রিন্টারে চালাবেন না, এটি কোনও পৃষ্ঠা মুদ্রণ করে না এবং এটি কেবলমাত্র বড়দিনের দিন পর্যন্ত আপনার প্রিন্টারকে ডস করবে। তারপরে আবারও আপনার মুদ্রকটি ফিরে পাওয়া একটি দুর্দান্ত উপস্থাপনা হবে।


4
প্রিন্টারে একটি চিহ্নটি টেপ করতে ভুলবেন না যেন: খ্রিস্টমাস না করে জবকে হত্যা করবেন না!
জোয়ে অ্যাডামস

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


5

পার্ল, 44 45

perl -E'1until localtime=~/c 25/;say"It's Christmas"'

জিএমটি সময় কি যথেষ্ট হবে না? (3 অক্ষর বন্ধ ;-)


1until localtime=~/c 25/;আপনি একটি চর সংরক্ষণ করতে হবে। :)
ইলমারি করোনেন

আমি ভেবেছিলাম যে আমি ইতিমধ্যে এটি চেষ্টা করেছি এবং এটি ব্যর্থ হয়েছে, তবে দেখা যাচ্ছে যে আমি আসলে -Eসেই সময়ে ভুলে গিয়েছিলাম । ধন্যবাদ!
জেবি

সমস্যা নেই. (গীত। আমি localtimeনীচের পরিবর্তে ব্যাকটিক্স ব্যবহার করে আপনার সমাধানের একটি সংস্করণ সবেমাত্র পোস্ট করেছি you আপনি যদি চান তবে এটি চুরি করতে নির্দ্বিধায় হন তবে আমি অতিরিক্ত নির্ভরতা পৃথক উত্তরকে ন্যায়সঙ্গত বলে অনুভব করেছি))
ইলমারি করোনেন

নাও, লজ্জা আমার আবার মনে হচ্ছে না । পৃথক উত্তর পুরোপুরি ন্যায়সঙ্গত আইএমও (এবং উন্নত)।
জেবি

5

পার্ল, 45

{localtime=~/c 25/&&die"It's Christmas";redo}

পার্ল, 44

টার্নারি অপারেটর ব্যবহার করে (ইলমারী করোনেনকে ধন্যবাদ)।

{localtime=~/c 25/?say"It's Christmas":redo}

? :পরিবর্তে && ;আপনাকে একটি চরও বাঁচাতে পারে। (এবং আমি সুন্দর আউটপুটের sayপরিবর্তে ব্যবহার করব use die)
ইলমারি করোনেন

@ ইলমারি করোনেন: ধন্যবাদ তবে ডাইয়ের sayপরিবর্তে ব্যবহার করে স্ক্রিপ্টটি কখনই শেষ হয় না।
টোটো

এটি যদি আপনি টার্নারি অপারেটর ব্যবহার করেন।
ইলমারি করোনেন

@ ইলমারি করোনেন: হ্যাঁ, অবশ্যই আমি খুব ক্লান্ত হয়ে থাকতে পারি !!!
টোটো


4

আমি স্ট্রিংকে পার্সিং না করে এটি করতে চেয়েছিলাম। পরবর্তীকালে, আমার কোডটিতে প্রচুর ম্যাজিক নম্বর রয়েছে।

আমি লিপ বছরগুলিতে অ্যাকাউন্টের জন্য কিছুটা প্রায় অনুমান করেছি। কেউই বলেনি যে এটি ঠিক এটিকে মুদ্রণ করতে হয়েছিল 00:00:00, 25 ডিসেম্বর!

পার্ল, 80 69 57 টি অক্ষর

{(time-30931200)%31557600<86399?die"It's Christmas":redo}

আরও সংক্ষিপ্ত লুপিংয়ের জন্য সম্পাদিত!



3

পাইথন, 66 68

import time
while'c 25'not in time.ctime():1
print"It's Christmas"

যে 1দ্বিতীয় লাইন শেষে আমাকে বেশ সন্দেহজনক মনে হচ্ছে। : পি
সিজেফুরে

@ ট্রিমস্টি: থিম 1-লুপের জন্য একটি শরীর সরবরাহ করে। এটি মূলত 25 ডিসেম্বর পর্যন্ত একটি ব্যস্ত অপেক্ষা It এটির সাথে একইরকম প্রভাব রয়েছে while 1:if'c 25'in time.asctime():break
স্টিভেন রাম্বালস্কি

আহ, ঠিক আছে, এটি পরিষ্কার করার জন্য ধন্যবাদ।
সিজেফুরে

আমি মনে করি time.ctime()না।
gnibbler

@gnibbler: আসলে এটা হবে। আমার স্নাতকের.
স্টিভেন রাম্বালস্কি

3

টিআই-বেসিক, 42 38

Repeat 769=sum(getDate²,2
End
"It's Christmas

তারিখের ফর্ম্যাটটি ওয়াইওয়াইওয়াই / এমএম / ডিডি হওয়ার প্রত্যাশা করে।

getDate একটি ত্রি-উপাদান তালিকা তৈরি করে {year,month,day}; কেবলমাত্র ক্রিসমাসে মাসে মাসে ^ 2 + দিন ^ 2 সমান 769।

স্ট্রিংয়ের জন্য 23 বাইট ব্যবহার করা হয় কারণ ছোট হাতের অক্ষর দুটি করে দুটি বাইট হয়, আমি বাদে যা কাল্পনিক ইউনিট টোকেন হিসাবে প্রদর্শিত হয়।


2

ব্যাচের ফাইল, 68 টি অক্ষর

:l
@date/t|findstr/c:"-12-25">nul&&echo It's Christmas&&exit
@goto l

ইন্টারেক্টিভভাবে ব্যবহারযোগ্য নয়, কারণ এটি সেশনটিকে হত্যা করে। সমাধানের জন্য আরও 5 টি অক্ষরের প্রয়োজন হবে।

এছাড়াও স্থানীয়-সংবেদনশীল। এটি আমার লোকালে কাজ করে যা আইএসও 8601 তারিখের ফর্ম্যাট ব্যবহার করে।

তবে ওহে, এটি একটি ব্যাচের ফাইল (বেশিরভাগ এমনকি প্রোগ্রামিং ভাষা হিসাবেও বিবেচিত হয় না)। এবং জাভাস্ক্রিপ্টের চেয়ে ছোট (এবং পাইথনের সাথে সমান)।


2

গ্রোভি, 55

while(!new Date()==~/.*c 25.*/);
println"It's Christmas"

মনে হয় এটি কার্যকর হয়, কিন্তু এখনও আউটপুট জন্য অপেক্ষা।


যদি গ্রোভির রেজেক্সপগুলি বেশিরভাগ অন্যান্য ভাষার মতো কিছু হয় তবে .*সেগুলি সম্পূর্ণ অপ্রয়োজনীয়। (গীত। আপনি 25 এর পরিবর্তে 5 ডিসেম্বর অপেক্ষা করে এটি পরীক্ষা করতে পারেন))
ইলমারি করোনেন

1
ইলমারি, গ্রোভি একটি জেভিএম ভাষা এবং জাভার রেজিক্সগুলি ডিফল্টরূপে অ্যাঙ্কর করা হয়।
জোয়

1
ইলমারি, আমি যাচাই করেছি তবে আমার প্রোগ্রামটি এখনও চলছে
আর্মান্ড

2

(পিডিএফ) ইটেক্স - 180 অক্ষর কেবল ডিসেম্বর 1-25।

\lccode`m`~\let\e\expandafter\def~{\ifdim900pt<\pdfelapsedtime
sp\pdfresettimer\else\e~\fi}\lowercase\e{\e\scantokens\e
{\romannumeral\numexpr (25 - \day)*96000}}It's Christmas!\bye

প্রোগ্রামটি শুরু হওয়ার সাথে সাথে টেক্সের কেবলমাত্র তারিখটি অ্যাক্সেস করার একটি উপায় রয়েছে এবং শুরুর পর থেকে সময় অতিবাহিত হয়েছিল, 32768 সেকেন্ডের মধ্যে কেপেছে, সুতরাং আমাকে অপেক্ষা করার জন্য সেকেন্ডের সংখ্যাটি গণনা করতে হবে এবং প্রতিটি সেকেন্ডের জন্য অপেক্ষা করে এমন একটি লুপ তৈরি করতে হবে যা প্রত্যেকটির জন্য অপেক্ষা করে সময়টি পৌঁছাতে 1sএবং পুনরায় সেট করতে সময় অতিবাহিত । (অবশ্যই, আমি 900 সেকেন্ডের ব্লক করছি doing)

যে কোনও মাসের জন্য কাজ করা আরও বেশি কাজের প্রয়োজন: 355 অক্ষর।

\lccode`m=`~\let\o\or\let\y\year\let\n\numexpr\let\e\expandafter
\def\b#1{\ifnum#1=\n(#1/4)*4\relax+1\fi}\def~{\ifdim
900pt<\pdfelapsedtime sp\pdfresettimer\else\e~\fi}\lowercase
\e{\e\scantokens\e{\romannumeral\n(25-\day+\ifcase\month\o334\b\y
\o303\b\y\o275\o244\o214\o183\o153\o122\o91\o61\o30\o0\ifnum25<\day
365\b{\n\y+1}\fi\fi)*96000}}It's Christmas!\bye

2

মাইএসকিউএল, 180 টি অক্ষর

কারণ আপনি আপনার ডাটাবেস ইঞ্জিনটি কীভাবে ব্যবহার করছেন?

DELIMITER $$
CREATE FUNCTION c() RETURNS CHAR(14) BEGIN a: LOOP IF DAY(NOW())=25 && MONTH(NOW())=12 THEN RETURN 'It\'s Christmas'; END IF; END LOOP a; END$$
DELIMITER ;
SELECT c();

দৈর্ঘ্যের দিক থেকে খুব প্রতিযোগিতামূলক নয়, তবে ওহে, এটি কার্যক্ষম!


চেষ্টা করুন DELIMITER /, RETURNS TEXTএবং CURDATE()LIKE'%12-25'; এবং কিছু সাদা স্থান অপসারণ করার চেষ্টা করুন।
তিতাস


2

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

<?while(date(dm)-1225);?>It´s Christmas;

25 ডিসেম্বর পর্যন্ত লুপ; তারপরে প্লেইন মোডে প্রিন্ট করুন এবং মুদ্রণ করুন।

ডিফল্ট সেটিংস সহ চালনা করুন (প্রদর্শন বিজ্ঞপ্তিগুলি নয়)।


2

8086 মেশিন কোড, 33 বাইট

00000000  b4 2a cd 21 81 fa 19 0c  75 f6 b4 09 ba 12 01 cd  |.*.!....u.......|
00000010  21 c3 49 74 27 73 20 43  68 72 69 73 74 6d 61 73  |!.It's Christmas|
00000020  24                                                |$|
00000021

1

জাভাস্ক্রীপ্ট, 93 89 78 77 অক্ষর

function x(){Date().match("c 25")?alert("It's Christmas"):setTimeout(x,1)}x()


@ জোয়ে ধন্যবাদ! আমি এটি সম্পর্কে ভুলে গেছি।
জিমিনপি

2
আর একটি অবরুদ্ধকরণীয় সংস্করণ: setInterval('/c 25/.test(Date())&&alert("It\'s Christmas")',9)cha১ টি অক্ষরে ... একমাত্র ব্যর্থতা হ'ল এটি alert()ক্রিসমাসে সারা দিন থাকবে।
ডেভিড মারডোক

কেন setInterval1? setInveralথেকে 1000*60*60*24এবং এটি উভয় প্রক্রিয়া ভোগে এবং বড়দিন শুধুমাত্র একবার সূচিত হবে করা হবে না।
জর্জ মাউয়ার

1

ডি, 130

import std.datetime,std.stdio;
main(){
do{
auto t = Clock.currTime();
}while(t.month!=12||t.day!=25);
writeln("It's Christmas");
}

আপনি সম্ভবত অ্যাসাইনমেন্টে দুটি অক্ষর সংরক্ষণ করতে পারেন। এবং লাইনের সংখ্যা হ্রাস করে আরও কয়েকটি।
জোয়

আমি কিছু ব্যবহার করে সংরক্ষণ করতে পারি t.month^12|t.day^25(যদি আমি আমার অগ্রাধিকারগুলি সঠিকভাবে পাই)
রাচেট ফ্রিক

1

প্রশ্ন, 63 অক্ষর

system"t 1000";.z.ts:{$["12.25"~-5#-3!.z.d;1"It's Christmas";]}

প্রতি বছর বড়দিনের জন্য কাজ করবে


1

এসকিউএল * প্লাস + পিএল / এসকিউএল - 100

EXEC LOOP EXIT WHEN TO_CHAR(SYSDATE,'DDMM')='2512';END LOOP;DBMS_OUTPUT.put_line('It''s Christmas');
  • অভিমানী SERVEROUTPUT ON
  • তারপরে মাইএসকিএল দ্রবণটি আরও খাটো (এটি খাওয়া, মাই এসকিএল!)
  • গত বছরের জন্য খুব দেরীতে, তবে এই বছরের জন্য সময় মতো
  • এর DBMS_OUTPUT.putপরিবর্তে চেষ্টা করা হয়েছে DBMS_OUTPUT.put_lineতবে এটি কিছুই মুদ্রণ করে না।

1

সি # (126)

using System;class P{static void Main(){while(DateTime.Now.Date.ToString("Md")!="1225");Console.WriteLine("It's Christmas");}}

আপনার ব্যাটারির জন্য আরও ভাল:

সি # (163)

using s=System;class P{static void Main(){s.Threading.Thread.Sleep(s.DateTime.ParseExact("1225","Md",null)-s.DateTime.Now);s.Console.WriteLine("It's Christmas");}}

সম্পাদন করা

দ্বিতীয় ("আপনার ব্যাটারির জন্য ভাল") সংস্করণে কিছুটা ইস্যু ডিস্ক থাকে। 26 ডিসেম্বর। 31 আমি কেবল ভেবেছিলাম: পি

উভয় সংস্করণ সম্ভবত কিছুটা ছোট করা যেতে পারে।


1

জাপট , ২ by বাইট (প্রতিদ্বন্দ্বী)

Ks f"c 25" ?`It's CËItµs`:P

আজকের তারিখের বিপরীতে পরীক্ষা করতে: c 25এই মাসের শেষ চিঠি (শর্টহ্যান্ড) + স্পেস + মাসের দিন দিয়ে প্রতিস্থাপন করুন ।Feb 02==b 02

এটি অনলাইন চেষ্টা করুন! প্রতিযোগিতামূলক নয় কারণ জাপট এই চ্যালেঞ্জের চেয়ে অনেক নতুন।


1

ভিবিএ, 58 বাইট

বেনামে ভিবিই উইন্ডো ফাংশনটি নকল করে যা কোনও ইনপুট নেয় না এবং এটি ক্রিসমাসের দিন অবধি চলে না, সেই সময়ে এটি It's Christmasভিবিই নকল উইন্ডোতে আউটপুট দেয়।

While Left(Now,5)<>"12/25":DoEvents:Wend:?"It's Christmas"


0

প্রশ্ন (60)

 system"t 1000";.z.ts:{if[.z.d~2012.12.25;1"It’s Christmas"]}

> এটি যদি ক্রিসমাস না হয় তবে আপনাকে অবশ্যই কোনওভাবে ক্রিসমাসের জন্য অপেক্ষা করতে হবে এবং তারপরে "এটি ক্রিসমাস" মুদ্রণ করতে হবে।
স্কিভে

আমার দুঃখিত, ক্রিসমাস কিনা প্রতি সেকেন্ডে যাচাই করার জন্য সংশোধন করে ... সুতরাং এটি প্রতি 25 শে ডিসেম্বর "এটি ক্রিসমাস" 86,400 বার মুদ্রণ করবে। স্পষ্টতই আপনি টাইমার বাড়িয়ে এটি পরিবর্তন করতে পারেন যা মিলি সেকেন্ডে রয়েছে।
সাইনডিএম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.