क्या यह क्रिसमस है?


33

चुनौती

यह देखते हुए कि क्रिसमस है:

  • दिसंबर
  • महीना 12
  • दिन २५

हर साल, आज की तारीख निर्धारित करें, और आज क्रिसमस है या नहीं। यदि यह क्रिसमस है, तो आपको अवश्य प्रिंट करना चाहिए "It's Christmas"। यदि यह क्रिसमस नहीं है, तो आपको क्रिसमस तक किसी तरह इंतजार करना होगा और फिर प्रिंट करना होगा "It's Christmas"

उदाहरण

से इस स्टैक ओवरफ़्लो प्रश्न

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

115 वर्णों में अजगर

नियम

ये नियम हैं:

  • मान लें कि कंप्यूटर की घड़ी हमेशा सही होती है।
  • आपका कोड किसी भी समय शुरू किया जा सकता है।
  • आपका कोड "It's Christmas"क्रिसमस पर प्रिंट होना चाहिए ।
  • लूपिंग निश्चित रूप से आवश्यक नहीं है, लेकिन एक बार शुरू होने के बाद आपका कोड तब तक बंद नहीं होना चाहिए जब तक कि वह प्रिंट न हो जाए।
  • सबसे छोटा कोड जीतता है।

मुझे लगा कि इस पोस्ट को पढ़ने से पहले इनपुट जूलियन तारीख में है
मिंग-तांग

जवाबों:



143

बैश, ३ ९

उन लोगों के लिए जो बस इंतजार नहीं कर सकते:

sudo date 12250000
echo It\'s Christmas

यह सभी नियमों का पालन करता है, विशेष रूप से पहला वाला।


11
चतुर। मेरे कहने का मतलब नहीं है, लेकिन चतुर चालाक।
पैट्रिक पेरिनी

8
"... और अगर कंप्यूटर की घड़ी हमेशा सही नहीं होती है, तो इसे बनाएं।" अच्छा प्रदर्शन!
जेबी

13
यदि आप रूट हैं तो आप 5 अक्षर बचा सकते हैं। : D
Wug

29

यूनिक्स, 39 बाइट्स

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

डेनिस की मदद से, इसके लिए धन्यवाद।


यह उल्लंघन करता है »लूपिंग निश्चित रूप से आवश्यक नहीं है, लेकिन एक बार शुरू होने के बाद आपका कोड तब तक बंद नहीं होना चाहिए जब तक कि यह मुद्रित न हो जाए।«।
जॉय

मैं तुम्हारी आलोचना नहीं समझता। क्या आप दावा करते हैं कि यह लूपिंग है? यह छपाई से पहले बंद हो जाता है?
उपयोगकर्ता अज्ञात

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
((तिथि) .डेट-ने "12/25") {} "इट्स क्रिसमस" # 45 वर्ण
जयकुल

जयकुल: धन्यवाद ... यह एक ऐसी चीज है जिसके बारे में मैंने कभी सोचा भी नहीं था।
जॉय

"अपमानजनक" स्क्रिप्ट भी -matchवर्णों में कोई लाभ / हानि के लिए वाइल्डकार्ड के बिना उपयोग कर सकती है , और कर सकती है।
इज़्ज़ी

आप अब दुरुपयोग को हटा सकते हैं, यह अनावश्यक है।
आउटगॉल्फ

@EriktheGolfer: ऐसा कैसे? यह अभी भी एक दिलचस्प वैकल्पिक दृष्टिकोण प्रदान करता है, भले ही यह छोटा न हो।
जॉय

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
प्रिंटर को यह कहते हुए साइन इन करना न भूलें: जो बिल नहीं है, उसके लिए क्रिसमस पर क्लिक करें!
जॉय एडम्स

मुझे लगता है कि अधिकांश प्रिंटर के पास एक वैकल्पिक हार्डवेयर घड़ी भी नहीं होगी क्योंकि यह एक वैकल्पिक सुविधा है। बहुत अच्छा, हालाँकि :)
जॉय


5

पर्ल, 44 45

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

जीएमटी समय पर्याप्त नहीं होगा? (3 वर्ण बंद ;-)


1until localtime=~/c 25/;आप एक चार बचा सकता है। :)
इल्मरी करोनें

मुझे लगा कि मैंने पहले ही कोशिश कर ली है और यह विफल हो गया, लेकिन यह पता चला कि मैं वास्तव -Eमें उस समय भूल गया था। धन्यवाद!
जेबी

कोई बात नहीं। (Ps। मैंने localtimeनीचे के बजाय बैकटिक्स का उपयोग करके आपके समाधान का एक संस्करण पोस्ट किया है । यदि आप चाहें तो इसे चोरी करने के लिए स्वतंत्र महसूस करें, लेकिन मुझे लगा कि अतिरिक्त निर्भरता एक अलग जवाब को उचित ठहराती है।)
इल्मरी करोनें

फिर से इसे न सोचने के लिए मुझ पर शर्म करो, शर्म करो । अलग-अलग उत्तर पूरी तरह से उचित है आईएमओ (और उत्कीर्ण)।
जेबी

5

पर्ल, 45

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

पर्ल, 44

टर्नेरी ऑपरेटर (इल्मरी करोनन के लिए धन्यवाद) का उपयोग करना।

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

? :इसके बजाय && ;आप एक चार को भी बचा सकते हैं। (और मैं saydie
प्रीटीयर

@ इल्मारी करोनन: धन्यवाद। लेकिन 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दूसरी पंक्ति के अंत में मेरे लिए काफी संदिग्ध लग रहा है। : पी
cjfaure

@Trimsty: 1जबकि लूप के लिए एक शरीर प्रदान करता है। यह मूल रूप से 25 दिसंबर तक एक व्यस्त प्रतीक्षा है। इसका समान प्रभाव पड़ता है while 1:if'c 25'in time.asctime():break
स्टीवन रंबलस्की

आह, ठीक है, कि ऊपर समाशोधन के लिए धन्यवाद।
cjfaure

मुझे लगता है कि time.ctime()करेंगे।
gnibbler

@gnibbler: वास्तव में यह होगा। अच्छा पकड़ा।
स्टीवन रंबलस्की

3

टीआई-बेसिक, 42 38

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

दिनांक प्रारूप को YYYY / MM / DD होने की उम्मीद है।

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"

लगता है कि यह काम करता है, लेकिन अभी भी आउटपुट की प्रतीक्षा कर रहा है।


यदि Groovy के regexps अधिकांश अन्य भाषाओं की तरह कुछ भी हैं, तो वे .*पूरी तरह से अनावश्यक हैं। (पीएस। आप इसे 25 के बजाय 5 दिसंबर की प्रतीक्षा करके परीक्षण कर सकते हैं।)
इल्मरी करोनें

1
इल्मरी, ग्रूवी एक जेवीएम भाषा है और जावा के रेगीक्स डिफ़ॉल्ट रूप से लंगर डाले हुए हैं।
जॉय

1
इल्मरी, मैं जाँच करूँगा लेकिन मेरा कार्यक्रम अभी भी चल रहा है
आर्मंड

2

(pdf) eTeX - 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 सेकंड के ब्लॉक कर रहा हूं।)

किसी भी महीने काम करने के लिए अधिक काम की आवश्यकता होती है: 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

MySQL, 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

PHP, 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)61 वर्णों पर ... एकमात्र दोष यह है कि यह 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(यदि मुझे मेरी प्राथमिकताएं सही हैं)
शाफ़्ट freak

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
  • कम है तो MySql समाधान (खाओ, MySql!)
  • पिछले वर्ष के लिए बहुत देर हो गई, लेकिन इस वर्ष के लिए समय में
  • DBMS_OUTPUT.putइसके बजाय की कोशिश की DBMS_OUTPUT.put_lineलेकिन वह कुछ भी प्रिंट नहीं करता है।

1

C # (126)

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

आपकी बैटरी के लिए अच्छा:

C # (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

जाप , 27 बाइट्स (गैर-प्रतिस्पर्धात्मक)

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

आज की तारीख के खिलाफ परीक्षण करने के लिए: c 25इस महीने के अंतिम पत्र (आशुलिपि) + माह के स्थान + दिन के साथ बदलें । Feb 02==b 02

इसे ऑनलाइन आज़माएं! गैर-प्रतिस्पर्धा क्योंकि जाप इस चुनौती से बहुत नया है।


1

VBA, 58 बाइट्स

बेनामी VBE विंडो फ़ंक्शन को तुरंत पूरा करता है, जो कोई इनपुट नहीं लेता है और यह क्रिसमस के दिन तक चलता है, जिस समय यह It's ChristmasVBE तत्काल विंडो में आउटपुट होता है।

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 बार प्रिंट करेगा। जाहिर है आप इसे टाइमर में वृद्धि करके बदल सकते हैं, जो कि मिलीसेकंड में है।
sinedcm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.