मुझे जन्मदिन मुबारक हो!


21

मुझे जन्मदिन मुबारक हो!

एक कार्यक्रम लिखें जो Happy birthday to me!अपने जन्मदिन पर प्रिंट करता है।

  1. कार्यक्रम का जन्मदिन कार्यक्रम (आप चुनते हैं) का निर्माण, अंतिम संशोधन या संकलन समय है, और इसे हार्ड-कोड नहीं किया जाना चाहिए।
  2. जन्मदिन के रूप में आपके द्वारा उपयोग की जाने वाली तारीख किसी भी तरह से कार्यक्रम के आह्वान या निष्पादन से प्रभावित नहीं होनी चाहिए। आप अपने जन्मदिन को संशोधित नहीं कर सकते।
  3. अतिरिक्त क्रेडिट (-15% बाइट काउंट) के लिए, Happy birthday to you!अपने जन्मदिन पर प्रिंट करें (हार्ड कोडित), अगर यह प्रोग्राम के साथ मेल नहीं खाता है । या कुछ सेलिब्रिटी के जन्मदिन का उपयोग करें और -14% प्राप्त करें।
  4. इसे केवल प्रिंट करना चाहिए, और किसी भी दिन कुछ भी प्रिंट नहीं करना चाहिए।
  5. यूटीएफ -8 में गिनती बाइट्स।
  6. ग्रेगोरियन कैलेंडर का उपयोग करें।

गुड लक और जन्मदिन की शुभकामनाएं (नवजात कार्यक्रमों के लिए)।

PS
इज़काता की टिप्पणी के बाद, यदि आप मेल काये के जन्मदिन Happy birthday to Melपर प्रिंट करते हैं , तो आपको 20% छूट मिलती है। लेकिन आपको एक विश्वसनीय स्रोत प्रदान करना होगा कि यह यह तारीख है।


1
@TeunPronk, आप दोनों नहीं कर सकते। या तो अपने खुद के जन्मदिन का उपयोग करें, या एक सेलिब्रिटी (या कोई नहीं, और अतिरिक्त क्रेडिट छोड़ दें)।
बदसूरत

4
@TeunPronk: केवल जॉन स्कीट कर सकते हैं: P
MSalters

11
मैंने इसे हॉट क्वेश्चन के साइडबार में देखा और "हैप्पी बर्थडे टू मेल " ...
इज़्काता

1
@PeterTaylor: हुह? अतिरिक्त सुविधाओं के लिए विभिन्न प्रकार के स्कोर बोनस देना कोड-गोल्फ प्रश्नों के लिए बहुत आम है , और मैंने पहले कभी किसी को यह दावा करते नहीं देखा कि यह उस टैग का उपयोग करने से एक प्रश्न को अयोग्य घोषित करेगा, जब तक कि प्राथमिक स्कोरिंग मानदंड कोड लंबाई है।
इल्मरी करोनें

1
@ इज़काटा, मेल के सम्मान में अपडेट किया गया सवाल।
ugoren

जवाबों:


10

PHP 77 75 74 65 60

टिम सेगुइन के शानदार सुझावों के लिए बहुत धन्यवाद :

<?date(dm,getlastmod())-date(dm)&&die?>Happy birthday to me!

डरपोक PHP: 46 42 41 40

फिल एच के विचार और फिर टिम सेगुइन के सुझाव का उपयोग करना :

<?touch(__FILE__)?>Happy birthday to me!

क्या यह तुलना में वर्ष शामिल नहीं करता है? यदि हां, तो यह केवल 0 वें जन्मदिन पर काम करता है।
बदसूरत

@ यूगोरेन तुम सही हो! सुधारों के लिए धन्यवाद। 2 बाइट बच गईं।
17

अगर नियमों में मतलब मानक आउटपुट में विश्लेषित किया जाता "preint कुछ भी नहीं है", तो आप को हटाने के द्वारा 4 बाइट जीत सकता है ''चारों ओर dmतार। यह एक चेतावनी उत्पन्न करता है, लेकिन मेरा मानना ​​है कि यदि त्रुटि रिपोर्टिंग चालू है, तो यह मानक त्रुटि के लिए भेजा जाता है।
टिम सेगिन

4
<?date(dm,stat(__FILE__)[9])-date(dm)&&die?>Happy birthday to me!
टिम सेगिन

1
@TimSeguine आपके सुझाव के लिए धन्यवाद! मैंने उन्हें अपने उत्तर में शामिल कर लिया है, मुझे आशा है कि आप बुरा नहीं मानेंगे।
ComFreek

48

बैश (डरपोक): 36

touch $0;echo Happy Birthday to me\!

नियमों के अनुसार: "कार्यक्रम का निर्माण, संशोधन या संकलन समय"। मैं संशोधन समय और एक सतत आत्म-संशोधन का चयन करता हूं। [1 चार्ट के लिए एचटी @ एकड़]

पर्ल (भी डरपोक): 29

print "Happy birthday to me!"

यह पहले की तुलना में यकीनन कम डरपोक है; पर्ल प्रोग्राम हमेशा निष्पादित होने से पहले संकलित किए जाते हैं, जो हर किसी को नहीं पता है - देखें, चुपके पर एक शैक्षिक स्पिन है। तो यहाँ यह संकलन तिथि है जो मैं उपयोग कर रहा हूँ।

- नियम परिवर्तन के लिए संपादित करें -

यह आपके जन्मदिन को बदलने के बारे में कोई नियम होने से पहले लिखा गया था। मुझे लगता है कि पर्ल अभी भी खड़ा है; सभी पर्ल कार्यक्रमों को चलाने से पहले संकलित किया जाता है। मैं शैक्षिक कारणों के लिए यहाँ जवाब छोड़ दूँगा!


6
ठीक है, धोखेबाज़, होशियारी के लिए मेरे +1 मिलता है।
विक्टर स्टैफुसा

1
आप 1 char!\!
user12205

1
अच्छी चाल, लेकिन नियम स्पष्ट रूप से इसे (अब) मना करते हैं।
बदसूरत

1
@ यूगोरेन अभी भी पर्ल समाधान को मना नहीं करता है, जो प्रोग्राम शुरू होने से पहले संकलित है ।
क्रंचर

3
@ क्रंचर, मुझे डर है कि तुम सही हो। मैं अपने वकील से सलाह लूंगा और आपको बिल भेजूंगा।
बदसूरत

13

बास - 65

[ `date +%d%m -r $0` = `date +%d%m` ]&&echo Happy birthday to me!

मदद के लिए बदसूरत , इक्का और nyuszika7h के लिए धन्यवाद ।


मुझे लगता है कि आप बच सकते हैं !के साथ \!ताकि आप उद्धरण की जरूरत नहीं है और बचाने 1 वर्ण।
user12205

वास्तव में मुझे लगता था कि जब से मुझे लगा कि प्रतिध्वनि के लिए उन्हें रिक्त स्थान की आवश्यकता होगी। मैंने उन्हें निकाल लिया और विस्मयादिबोधक चिह्न से बच नहीं पाया और यह अभी भी काम कर रहा है। पारितोषिक के लिए धन्यवाद!
शियोना

2
आपको केवल !इंटरेक्टिव गोले में भागने की जरूरत है , स्क्रिप्ट की नहीं।
nyuszika7h

आप का उपयोग करके दो अक्षर बचा सकता है [और ]बजाय [[और ]]
nyuszika7h

1
क्या यह तब काम करता है जब वर्ष निर्माण तिथि के समान नहीं होता है?
बदसूरत

6

C # 198.05 (233 - 15%)

using s=System;class P{static void Main(){string t=s.DateTime.Now.ToString("Mdd"),b="1202";if(s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd")==t|b==t)s.Console.Write("Happy birthday to "+(b==t?"you!":"me!"));}}

प्रारूपित:

using s = System;
class P
{
    static void Main()
    {
        string t = s.DateTime.Now.ToString("Mdd"), b = "1202";
        if (s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd") == t | b == t)
            s.Console.Write("Happy birthday to " + (b == t ? "you!" : "me!"));
    }
}

191 (कोई बोनस नहीं)

using s=System;class P{static void Main(){if(s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd")==s.DateTime.Now.ToString("Mdd"))s.Console.Write("Happy birthday to me!");}}

181,05 (213 - 15%)

कुछ अतिरिक्त निर्देशों के साथ (आपको b.exeनिष्पादन योग्य निर्देशिका से इसे संकलित करने और चलाने की आवश्यकता है) मैं इसे नीचे ले जा सकता हूं:

using s=System;class P{static void Main(){string t=s.DateTime.Now.ToString("Mdd"),b="1202";if(s.IO.File.GetCreationTime("b.exe").ToString("Mdd")==t|b==t)s.Console.Write("Happy birthday to "+(b==t?"you!":"me!"));}}

171 (कोई बोनस नहीं)

उपरोक्त निर्देशों के समान, इस बार केवल स्वयं के जन्मदिन पर एक संदेश प्रिंट करना (इसलिए कोई -15% बोनस)।

using s=System;class P{static void Main(){if(s.IO.File.GetCreationTime("b.exe").ToString("Mdd")==s.DateTime.Now.ToString("Mdd"))s.Console.Write("Happy birthday to me!");}}

आप ,b="1202"==tतारीख स्ट्रिंग प्राप्त करने और उसके बजाय इसका उपयोग करके बोनस बाइट्स में कुछ बाइट्स बचा सकते हैं ।
अहरुश

1
धन्यवाद! हालांकि "कुछ बाइट्स" एक हो जाता है ... या मैं कुछ याद कर रहा हूं? संपादित करें आह, मैं देखता हूं; आपने कहा ,b="1202"==tलेकिन ==tयह संभव नहीं है क्योंकि इसका मूल्यांकन एक बूल के लिए होता है और दूसरा संस्करण एक स्ट्रिंग है। आप (AFAIK है) एक "var" घोषणा में दो अलग-अलग प्रकारों का उपयोग नहीं कर सकते।
रोबुथ फेयर

आह ठीक है। जब से मैंने C # का उपयोग किया है तब से यह एक समय है। मेरी गलती।

आप तारीखों की तुलना करके सरल संस्करण को छोटा कर सकते हैं, तार नहीं। कुछ का उपयोग कर इस पुरुषों की तरह CreationTime.Date == DateTime.Today
svick

यह केवल आज के लिए काम करेगा / इस वर्ष / जन्मदिन 0. यह अन्य वर्षों के लिए कैसे काम करेगा?
रॉबथ आठ

5

जावा - 275 - 15% = 233.75 बोनस के साथ / 237 बिना बोनस के

बोनस के साथ:

import java.util.*;class L{public static void main(String[]y){int s=f(new Date());String j="Happy birthday to ";System.out.print(s==f(new Date(new java.io.File("L.class").lastModified()))?j+"me!":s==183?j+"you!":"");}static int f(Date d){return d.getMonth()*40+d.getDate();}}

बोनस के बिना:

import java.util.*;class L{public static void main(String[]y){if(f(new Date())==f(new Date(new java.io.File("L.class").lastModified())))System.out.print("Happy birthday to me!");}static int f(Date d){return d.getMonth()*40+d.getDate();}}

मेरा जन्म 23 अप्रैल को हुआ था।


1
जन्मदिन मुबारक हो करने के लिए , नहीं के लिए ;-) बस आपको एक और बाइट :-) बचाया
RobIII

@ रोब्थ थैंक्स, फिक्स्ड।
विक्टर स्टैफुसा

इसके अलावा, नई लाइन ( \n) की आवश्यकता नहीं है AFAIK जो आपको एक और 4 बाइट्स
बचाती है

@RobIII फिर से धन्यवाद।
विक्टर स्टैफुसा

हाँ ... मुझे अपने पैर की शूटिंग बंद कर देनी चाहिए: पी यू आर वेलकम;)
रॉबथ '

3

मुझे संदेश पर कुछ बाइट्स बचाने के लिए इस छोटी सी चाल पर बहुत गर्व है। मुझे उम्मीद है कि इसे अन्य उत्तरों में शामिल किया जाएगा। मैं यह सोचने वाला पहला व्यक्ति था!

अजगर

105 वर्ण, कोई अतिरिक्त श्रेय नहीं। फ़ाइल को "मेरे लिए जन्मदिन मुबारक" के रूप में सहेजें और चलाएं। केवल GMT में चलता है, और "जन्मदिन" को आपके जन्म की तारीख के रूप में परिभाषित किया जाता है, न कि यह वर्षगांठ (जिसे अक्सर "जन्मदिन" भी कहा जाता है)।

import sys,os,time
if (int(os.stat(*sys.argv).st_atime/86400)==int(time.time()/86400)):print sys.argv[0]

इसे काम करने के लिए, इसे "मेरे लिए जन्मदिन मुबारक" के रूप में सहेजें और चलाएं python "happy birthday to me"

नोट: बेशक, सभी लेकिन एक छोटा बूटस्ट्रैप फ़ाइलनाम में हो सकता है, जिससे किसी भी बड़े कोड को बूटस्ट्रैप में कम किया जा सकता है। आम तौर पर मैं इस "धोखा" पर विचार करूंगा। हालांकि, "मुझे जन्मदिन मुबारक" एक अनुचित फ़ाइल नाम नहीं है - यह वर्णन करता है कि कार्यक्रम क्या करता है, कुछ कार्यक्रमों की तुलना में बहुत बेहतर है (जैसे "अजगर"), इसलिए इस मामले में मैं इसे अनुमति देने जा रहा हूं :)


मुझे लगता है कि फ़ाइल नाम पर भरोसा करना धोखा है (हालांकि मैंने इसे स्पष्ट रूप से मना नहीं किया था)। अगर इसकी अनुमति है, तो सिर्फ लिखना क्यों नहीं eval(sys.argv[0])?
बदसूरत

और मैं जन्मदिन को परिभाषित करने के लिए परेशान नहीं था, लेकिन यह एक ऐसा दिन है जो साल में एक बार आता है जब कोई व्यक्ति अपने जन्म की सालगिरह मनाता है , न कि उस दिन जब आप पैदा हुए थे।
बदसूरत

ugoren: मैंने उल्लेख किया है कि मेरे नोट में सबसे नीचे (जो आपकी टिप्पणी को पूर्व-तारीख करता है)। However, "happy birthday to me" is not an unreasonable filename - it describes what the program does, much better than some programs (e.g. "python"), so in this case I'm going to allow it
AMADANON इंक।

2

मतलाब: 66

t=dir('f.m');if strncmp(t.date,date,5),'Happy birthday to me!',end

फ़ाइल का नाम 'fm' होना चाहिए


1
पर अपने जन्मदिन यह "करने के लिए जन्मदिन मुबारक हो कहना चाहिए आप !" :-)
राबर्ट आठ

@ रोब्थ: ओह, ठीक है, मैंने ध्यान से नहीं पढ़ा। दूसरा संस्करण निकाल देंगे। धन्यवाद!
एच। मस्टर

मुझे लगता strncmp(x, y, 5)है कि तारीखों की तुलना 28-12-2013पहले 15 वर्णों की तरह है ( 28-12उदाहरण के लिए dec। 28 वां)। क्या यह तब भी काम करता है जब उपयोगकर्ता की स्थानीय सेटिंग्स yyyy/mm/ddउदाहरण के लिए होती हैं? क्या मतलब dd-mm-yyyyहमेशा चूक करता है ? (बस उत्सुक)। कोई बात नहीं संपादित करें : यह पाया गया! । ऐसा लगता है कि यह करता है। यह किसी भी तरह के लिए mm/dd/yyyyया dd-mm-yyyyदोनों बाएं और दाएं ऑपरेंड के लिए वैसे भी मायने नहीं रखेगा, वैसे भी और दोनों 5 सबसे बाएं चार्ट का मिलान किसी भी तरह होगा; जब तक वर्ष कभी भी अग्रणी न हो।
रोब आठ

आपको चर की आवश्यकता क्यों है t? dir('f.m').dateकाम नहीं करता है?
ugoren

@ugoren: फ़ाइल विशेषताएँ वापस tकरने के लिए आवश्यक है dir(अन्यथा यह सिर्फ उस निर्देशिका की सभी फ़ाइलों को मिलान करेगा 'f.m')। इसके अलावा, tइस dateक्षेत्र का उपयोग करने के लिए आवश्यक है ।
एच। मस्टर

2

जीएनयू कॉबोल विथ -फ्री, 204

PROGRAM-ID.B.DATA DIVISION.WORKING-STORAGE SECTION.
1 A PIC XXXX/XX.
1 B PIC X(5).
1 C PIC X(21).
PROCEDURE DIVISION.ACCEPT A FROM DATE
ACCEPT C
MOVE WHEN-COMPILED TO B
IF A(3:5) = B OR "12/09" DISPLAY C.

मैं सेलिब्रिटी के बारे में नियम तोड़ता हूं, इसलिए वहां कोई बोनस नहीं ...

उत्पादित पाठ उपयोगकर्ता-इनपुट (चलाने के समय अनुरोध किया गया) है। यदि वह अच्छा नहीं है, तो अतिरिक्त सात वर्णों के लिए, परिभाषित लाइन को Cहटाने की आवश्यकता है, जैसा कि करता है ACCEPT C, और DISPLAY Cबनना चाहिए DISPLAY "HAPPY BIRTHDAY TO ME!"

WHEN-COMPILEDएक विशेष-रजिस्टर है जिसमें संकलन तिथि / समय है जो कार्यक्रम के लिए उपलब्ध है (हमेशा काम में, आप जान सकते हैं कि आपके पास सही संस्करण है)। इसमें छंटनी की जाती है MOVEक्योंकि बाकी की जरूरत नहीं होती है। DATEवर्तमान तिथि है - यह एक ymmdd है।

/के बाद से संकलन की तारीख स्लैश शामिल एक की परिभाषा में, एक प्रविष्टि संपादन प्रतीक है। एक अतिरिक्त चरित्र, लेकिन तुलना को आसान बनाता है।

सेलिब्रिटी = ग्रेस हॉपर


2

बैच - 37 बाइट्स

बैश के जवाबों में से एक द्वारा इस्तेमाल की जाने वाली विधि चोरी करना ।।

@echo.>>%0&echo Happy birthday to me!

अन्य विधि - 145 बाइट्स

@for /f "tokens=2,3 delims=/ " %%a in ("%date%")do @for /f "tokens=1,2 delims=/" %%c in ("%~t0")do @if %%a%%b==%%c%%d @echo Happy Birthday to me!

1

रूबी, 69 अक्षर / बाइट्स

puts'Happy birthday to me!'if(Time.new-File.atime($0))%31536000<86400

31536000एक वर्ष में सेकंड की संख्या है, और 86400एक दिन में सेकंड की संख्या है।


4
दुर्भाग्य से, केवल सात साल या तो अधिकतम के लिए सही ढंग से काम करता है, जब तक कि आप atime के बाद पहली छलांग वर्ष में नहीं चलते हैं।
आमदन

आपके जन्मदिन के बाद सुबह को "जन्मदिन मुबारक" कहते हैं, और आपके जन्मदिन की सुबह को आपके जन्मदिन से पहले जन्मदिन की शुभकामनाएं नहीं कहते हैं।
AMADANON Inc.

1

जावास्क्रिप्ट

नोड.जेएस, 156 बाइट्स

b=new Date(require("fs").statSync(__filename).mtime);d=new Date();b.getDate()==d.getDate()&&b.getMonth()==d.getMonth()&&console.log("Happy birthday to me!")

फ़ाइल के संशोधन समय का उपयोग करता है।


अब तक 56 बाइट्स से आप
पीटते रहे

जब मैं आपका दौड़ता हूं तो मुझे एक रनटाइम त्रुटि मिलती है, लेकिन मैच दृष्टिकोण निश्चित रूप से बहुत चालाक है। त्रुटि को ठीक करें और आपने मेरा उत्थान कर लिया है। ;)
क्रिस डब्ल्यू।

क्या आप त्रुटि और अपने OS को उद्धृत कर सकते हैं? मुझे लगता है कि यह सिर्फ crossplatform नहीं है।
स्ट्रैंथ कैल्शियम

1

पॉवर्सशेल - 105 बाइट्स

if('{0:M}'-f(gi $MyInvocation.MyCommand.Definition).creationtime-eq(date -f M)){'Happy birthday to me!'}

Ungolfed:

if('{0:M}' -f (gi $MyInvocation.MyCommand.Definition).creationtime -eq (date -f M)){
  'Happy birthday to me!'
}

बोनस इसके लायक नहीं है, मैं केवल 117.5 प्राप्त कर सकता हूं।


1

शक्तिशाल - १२owers

if ((gci $MyInvocation.MyCommand.Path).lastwritetime.ToString("MMdd") -eq (get-date).ToString("MMdd")){"happy birthday to me!"}

15% बोनस के लिए - 151 बाइट्स, कम 15% = 128.4

$r=@{"0308"="you";(gci $MyInvocation.MyCommand.Path).lastwritetime.ToString("MMdd")="me"}[(get-date).tostring("MMdd")]
if($r){"Happy birthday to $r!"}

1
मैं कोई विशेष विशेषज्ञ नहीं हूं, लेकिन यह केवल चालू वर्ष में काम करेगा? क्या होगा जब "कार्यक्रम" में 1, 2, 3 आदि का जन्मदिन होता है?
21

आप writeकमांड को हटा सकते हैं - बस "happy birthday to me!"इसके साथ यह प्रिंट आउट लेगा।
चाचा

आपका बिलकुल सही। मुझे पता होना चाहिए कि
क्रिस जे

@ रोबिल - उफ़। जब मैं किसी और चीज़ से विचलित होता हूं और कोडगुल्फ़ का उपयोग शिथिलता के रूप में करता हूं तो कुछ लिखना आता है। फिक्स्ड (ऐसा नहीं है कि यह जीतने का एक मौका है, मन)।
क्रिस जे

1

रूबी - 80 103 87 बाइट्स

m=File.mtime $0
t=Time.now
puts"Happy birthday to me!"if t.month==m.month&&t.day==m.day

रूबी - 123 115 135 121 - 15% = 104.55 97.75 114.75 102.85 अंक

t=Time.now
{me:File.mtime($0),you:Time.at(36e5)}.map{|n,d|puts"Happy birthday to #{n}!"if t.month==d.month&&t.day==d.day}

आपका जन्मदिन वर्ष में कहाँ पर पड़ता है और यह दर्शाने का सबसे छोटा तरीका है, इस पर निर्भर करते हुए थोड़ा लंबा या छोटा हो सकता है। मेरे लिए, वह 36e5(सेकंड के बाद से; समय क्षेत्र निर्भर)।


मेल गिब्सन की गिनती करता है ? यहाँ एक 138 बाइट - 35% बोनस = 89.7-पॉइंट प्रोग्राम है जो खुद को, मुझे और मेल को मनाता है!

t=Time.now
{me:File.mtime($0),you:Time.at(36e5),Mel:Time.at(2e5)}.map{|n,d|puts"Happy birthday to #{n}!"if t.month==d.month&&t.day==d.day}

1
फरवरी के बाद की तारीखों के लिए आपका कोड लीप वर्षों में विफल रहता है।
बदसूरत

@ आप सही हैं। निश्चित कि, लेकिन बहुत सारे अंक खो दिए :(
टिम एस।

लेकिन अब मैंने उनमें से अधिकांश को पुनः प्राप्त कर लिया है! =)
टिम एस।

0

PureBasic

बोनस के बिना - 142

If Bool(FormatDate("%dd%mm",Date())=FormatDate("%dd%mm",GetFileDate(ProgramFilename(),0)))
MessageRequester("","Happy birthday To me!")
EndIf

बोनस के साथ - 218 - 15% = 185.3

Dim s$(2)
s$(1)="me"
s$(2)="you"
m$="%dd%mm"
d$=FormatDate(m$,Date())
i=Bool(d$=FormatDate(m$,GetFileDate(ProgramFilename(),0)))|(Bool(d$="2301")<<1)
If i=0:End:EndIf
MessageRequester("","Happy birthday To "+s$(i)+"!")

0

टीआई-बेसिक, 68 बाइट्स

If Ans=0:getDate→G:0:G=G:If getDate=G:Disp "HAPPY BIRTHDAY TO ME!"

याद रखें, ये टोकन एक बाइट हैं If , Ans, →, Disp:। getDateदो बाइट्स है। अन्य सभी एक-चरित्र प्रतीक एक बाइट हैं।


1
क्या आप सुनिश्चित हैं कि UTF-8 है?
फोजआउटआउट

3
ओपी स्पष्ट रूप से बताता है कि आपको यूटीएफ -8 का उपयोग करना चाहिए। वह 66 अक्षर और 68 बाइट्स है।
nyuszika7h 19

2
यदि आप यह दावा करना चाहते हैं कि यह 46 बाइट्स है, तो इसे 46 बाइट्स में लिखें। जैसा कि अभी है, यह 68 बाइट्स है।
बदसूरत

एक मानक टीआई-बेसिक वातावरण में टोकन के आकार के अनुसार यह 55 बाइट्स है, लेकिन सादे पाठ के रूप में इसकी 68 वर्ष है। इसके अलावा तकनीकी रूप से "अंत में" होना जरूरी नहीं है ताकि एक बाइट को बचा सके।
लेमन ड्रॉप

0

जे 79 ९

 echo((6!:0'')(('',:'Happy birthday to me!'){~])@:-:&(1 2&{)&:>])1{,1!:0{:4!:3''

बोनस संस्करण120 - 15% = 102

जब दोनों का जन्मदिन हो रहा हो, तो क्या मुझे दोनों को प्रिंट करने के लिए अतिरिक्त क्रेडिट भी मिलेगा?

echo((2 6$(6!:0 '') , 0 2 7)(' ','Happy birthday to ',"2 1]3 5$'you! me!  both!'){~#.@:(-:&(1 2&{)"1)&:>])1{,1!:0{:4!:3''

स्पष्टीकरण (दाएं से बाएं):

last =: {:4!:3''     NB. Take the last script run (i.e. the file itself)
time =: 1{,1!:0 last NB. the modification time is the second element in that file's listing

ट्रेन की केंद्रीय क्रिया

unbox_both =: &:>      NB. unboxes left and right argument
match  =: -:&(1 2&{)"1 NB. for each date given, left and right, compare them
to_int =: #.           NB. convert boolean to int
from   =: {~           NB. from the left array, take element right.

NB. H contains messages an empty row, appended to all combinations of messages. 
H =: (' ','Happy birthday to ',"2 1]3 5$'you! me!  both!')

V =: (H from to_int)@:match unbox_both NB. after unboxing and comparing, 
                                       NB. select the according message

केंद्रीय ट्रेन के लिए बायीं ओर की ट्रेन:

dates=: (2 6$(6!:0 '') , 0 2 7) NB. the current date, and the relevant fields of my birthday.

NB. Combining the bricks:
echo (dates V ]) time           NB. output the monads result on time.

0

जावा - 196

यह अन्य जावा सबमिशन से अलग होता है स्ट्रिंग्स का उपयोग करते हुए, इस प्रक्रिया में 41 अक्षरों को बंद कर देता है। यह java.util.Date को प्रारूपित करने के लिए String.format ("% tj") का उपयोग करता है। एक वर्ष के स्ट्रिंग के रूप में लंबे समय तक या फिर इन दोनों स्ट्रिंग्स की तुलना करता है।

class Z{public static void main(String[]y){if("".format("%tj",new java.util.Date()).equals("".format("%tj",new java.io.File("Z.class").lastModified())))System.out.print("Happy birthday to me!");}}

प्रारूपित:

class Z
{
    public static void main(String[] y)
    {
        if ("".format("%tj", new java.util.Date()).equals("".format("%tj", new java.io.File("Z.class").lastModified())))
            System.out.print("Happy birthday to me!");
    }
}

1
लीप वर्ष के साथ वर्ष का दिन अच्छी तरह से काम नहीं करता है।
बदसूरत

@ यूगोर्न मैं सहमत हूं। हालांकि, चूंकि प्रतियोगिता वर्तमान में चल रही है और हम 20 फरवरी को हैं। संकलन डेट कुछ दिनों के लिए ठीक होनी चाहिए और इसके बाद के वर्षों में कोई समस्या नहीं होगी। 28 फरवरी के बाद संकलन करते समय वास्तव में एक (भविष्य) समस्या होगी।
रोबिन आठ

अगर मैं 28 फरवरी के बाद संकलन कर रहा था, तो मैं स्ट्रिंग फॉर्मेट को छह बिंदु चरित्र लागत पर "% tm% td" में बदल सकता था
टाइमसीज़

0

C # 191 कोई बोनस नहीं

using s=System;class P{static void Main(){if(s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd")==s.DateTime.Now.ToString("Mdd"))s.Console.Write("Happy birthday to me!");}}

स्वरूपित:

using s = System;
class P
{
    static void Main()
    {
        if (s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd") == s.DateTime.Now.ToString("Mdd"))
            s.Console.Write("Happy birthday to me!");
    }
}

आप केवल दो बार x का उपयोग करते हैं; var x="MMdd";+ ToString ( x) + ToString ( x) = 15 जबकि ToString ( "MMdd"); + ToString ( "MMdd"); केवल लागत 12.
21

इसके अलावा, एक नई लाइन की आवश्यकता नहीं है, इसलिए WriteLine()इसे छोटा किया जा सकता है Write()। ऊपर और इस परिवर्तन के साथ आपके पास ठीक वैसा ही समाधान है जैसा मैं करता हूं ;-)
RobIII

1
आपको स्कोर भी अपडेट करना चाहिए, जो अब 193 है। और आप इसे नीचे 191 करने के लिए शेविंग दो से एम बंद है प्राप्त कर सकते हैं * संकेत *: पी
RobIII

0

जावास्क्रिप्ट (नोड.जेएस) - 100 बाइट्स

(require('fs').fstatSync(4).mtime+1).match(Date().substr(4,6))&&console.log('Happy birthday to me!')

0

vb.net ~ 161 सी

यह उन सभी के लिए उत्सव संदेश को प्रिंट करेगा जिनके जन्मदिन है।

Module M
Sub Main
For Each b In{({"1705","Alan"}),({"2012","You"}),({FileDateTime(Process.GetCurrentProcess.MainModule.FileName).ToString("ddMM"),"Me"})}
If b(0)=Now.ToString("ddMM") Then Console.WriteLine("Happy Birthday To {0}!",b(1))
Next
End Sub
End Module

एलन => एलन केई

स्कोर: 253 सी (-33 सी vb.net मिनट) = 220 - 15% (मेरा जन्मदिन बोनस) = 187c - 14% (सेलेब जन्मदिन) = 160.82 ~ 161c या 220c - 29% = 156.2 ~ 157c


आप अपने जन्मदिन या एक सेलिब्रिटी के लिए एक बोनस प्राप्त कर सकते हैं। दोनों नहीं।
ugoren

@ यूगोरेन स्कोरिंग यह नहीं बताता है कि यह एक विशेष या है, इसलिए मैं तार्किक अर्थ का उपयोग कर रहा हूं या।
एडम स्पाइट

0

पॉवरशेल, 82 बाइट्स

क्रिस जे और स्पेलिंग डी के उत्तर भी देखें

"Happy birthday to me!"|?{(gv My* -v|% M*|% p*h|gci|% l*w*e|% D*r)-eq(date|% D*r)}

कहा पे

gv My* -v|% M*|% p*h|gci|% l*w*e|% D*r

अभिव्यक्ति के लिए शॉर्टकट और उपनामों का संयोजन है :

Get-Valiable MyInvocation -value|% MyCommand|% Path|Get-ChildItem|% LastWritetime|% DayOfYear

एक विहित रूप के बराबर:

(Get-ChildItem $MyInvocation.MyCommand.Path).LastWritetime.DayOfYear

पॉवर्सशेल, 119 बाइट्स - 14% = 102.34 अंक

filter e{$_-eq(date|% D*r)}$('me'|?{gv My* -v|% M*|% p*h|gci|% l*w*e|% D*r|e}
'Prof'|?{3|e})|%{"Happy birthday to $_!"}

पर 3 जनवरी , स्क्रिप्ट प्रदर्शन Happy birthday to Prof!। यदि यह स्क्रिप्ट 3 जनवरी को सहेजी जाती है, तो दो अभिवादन प्रदर्शित किए जाएंगे।


-1

सी # - 63 बाइट्स

class P
{
    static void Main()
    {
          Console.Write("Happy birthday to me!"));
    }
}

मैं संकलन समय चुनता हूं । चूंकि C # कोड MSIL को संकलित करता है जो रनटाइम पर JIT कंपाइलर द्वारा निष्पादन योग्य कोड के लिए संकलित किया जाता है , यह प्रोग्राम शर्तों को पूरा करता है।

EDIT-- टिप्पणियों में बताए अनुसार संभवतः अमान्य उत्तर।


1
पुरानी चाल, अब मान्य नहीं है। नियम 2 कहता है "कार्यक्रम के आह्वान या किसी भी तरह से निष्पादन से प्रभावित नहीं होना चाहिए"।
बदसूरत

तदनुसार अद्यतन किया गया। थैंक यू @ugoren
rahulroy9202

@ Hugoren फिल एच द्वारा पेरल कोड भी इसी चाल का उपयोग करता है। सबसे अधिक वोट दिए गए उत्तर की जांच करें।
राहुलराय 9202

2
यह एक अमान्य उत्तर भी है। लेकिन - वह पहली बार इस ट्रिक का उपयोग करने वाला था, और जिस समय उसने ऐसा किया नियमों ने उसे अनुमति दी।
बदसूरत
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.