Doğum günün kutlu olsun!


21

Doğum günün kutlu olsun!

Happy birthday to me!Doğum gününde basılan bir program yazın .

  1. Programın doğum günü, programın oluşturulması, son değiştirilmesi veya derlenme zamanıdır (seçtiğiniz) ve kodlanmış olmamalıdır.
  2. Doğum günü olarak kullandığınız tarih, programın başlatılmasından veya yürütülmesinden hiçbir şekilde etkilenmemelidir. Doğum gününü değiştiremezsin.
  3. Fazladan kredi için (-15% bayt sayısı), programla aynı değilseHappy birthday to you! , doğum gününü yazdır (kodlanmış) . Veya ünlülerin doğum gününü kullanın ve% -14 kazanın.
  4. Yalnızca bunu basmalı ve başka bir günde hiçbir şey yazdırmamalıdır.
  5. UTF-8’de bayt say
  6. Gregoryen takvimini kullanın.

İyi şanslar ve mutlu yıllar (yenidoğan programlarına).

PS
yazdırmak eğer Izkata yorumuna ardından Happy birthday to Melüzerinde Mel Kaye 'ın doğum günü, sen% 20 inin. Ancak bu tarihin güvenilir bir kaynağını sağlamalısınız.


1
@TeunPronk, İkisini birden yapamazsınız. Ya kendi doğum gününü, ya da bir ünlünün (ya da hiçbiri ve ekstra kredisinden vazgeç) kullanın.
ugoren

4
@TeunPronk: Sadece Jon Skeet şunları yapabilir: P
MSalters

11
Bunu Sıcak Sorular kenar çubuğunda gördüm ve " Mel'in Doğum
Günün

1
@ PeterTaylor: Huh? Ekstra özellikler için çeşitli puan bonusları vermek, kod golfü soruları için oldukça yaygındır ve daha önce hiç kimsenin, birincil puanlama kriteri kod uzunluğu olduğu sürece, bu etiketi kullanmanın bir soruyu diskalifiye edeceğini iddia etmediğini hiç görmedim .
Ilmari Karonen

1
@ Izkata, Mel onuruna soru güncellendi.
ugoren

Yanıtlar:


10

PHP 77 75 74 65 60

Tim Seguine'den gelen mükemmel öneriler için çok teşekkürler :

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

Sinsi PHP: 46 42 41 40

Kullanılması Phil H fikrini tekrar Tim Seguine önerisini :

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

Karşılaştırmadaki yılı içermiyor mu? öyleyse, yalnızca 0 doğum gününde çalışır.
ugoren

@ugoren Haklısın! Düzeltme için teşekkürler. 2 bayt kaydedildi.
ComFreek

Kurallarda "hiçbir şey belirtmez" ifadesi standart çıktı anlamına gelirse '', dmdizgilerin etrafını kaldırarak 4 bayt kazanabilirsiniz . Bir uyarı oluşturdu, ancak hata bildirimi açıksa standart hataya gönderildiğini düşünüyorum.
Tim Seguine

4
<?date(dm,stat(__FILE__)[9])-date(dm)&&die?>Happy birthday to me!
Tim Seguine

1
@TimSeguine Önerileriniz için teşekkürler! Onları cevabımı içine aldım, umarım sakıncası yoktur.
ComFreek

48

Bash (sinsi): 36

touch $0;echo Happy Birthday to me\!

Kurallara göre: "Programın oluşturulması, değiştirilmesi veya derlenme zamanı". Değişiklik zamanını ve daimi bir kendini değiştirmeyi seçiyorum. [1 char için HT @ace]

Perl (ayrıca sinsi): 29

print "Happy birthday to me!"

Bu tartışmasız birinciden daha az sinsi; Perl programları, yürütülmeden önce her zaman derlenir, ki bu herkesin bilmediği bir şeydir - bakın, gizli olma konusunda bir eğitim süreci vardır. İşte burada kullanıyorum derleme tarihi.

- Kural değişikliği için düzenleme -

Bu, doğum gününü değiştirmeyle ilgili herhangi bir kural olmadan önce yazılmıştı. Bence Perl hala duruyor; tüm Perl programları çalıştırılmadan önce derlenir. Cevabı eğitim nedenleriyle burada bırakacağım!


6
Tamam, hileci, zekâ için + 1'imi al.
Victor Stafusa

1
Sen kaçabilir !ile \!1 kömürü kaydetmek ve tırnak kaldırmak
user12205

1
Güzel numara, ama kurallar açıkça yasakladı (şimdi).
ugoren

1
@ugoren Program başlamadan önce derlenen perl çözümünü hala yasaklamıyor .
Cruncher

3
@ Cruncher, haklısınız korkarım. Avukatıma danışıp size faturayı göndereceğim.
ta ugoren

13

bash - 65

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

Ugoren , as ve nyuszika7h yardım için teşekkürler .


Sana kaçmayı düşünüyorum !ile \!size tırnak gerekmez ve 1 Char tasarrufu.
user12205

Aslında, yankıların mekanlar için gerekli olacağını düşündüğümden alıntılar yaptım. Onları dışarı çıkardım ve ünlem işaretinden kaçmadım ve hala işe yaradı. Bahşiş için teşekkürler!
shiona

2
!Senaryolarda değil, sadece etkileşimli mermilerde kaçman gerekiyor.
nyuszika7h

Sen kullanarak iki karakter kaydedebilir [ve ]yerine [[ve ]].
nyuszika7h

1
Yıl, yaratılış tarihi ile aynı olmadığında işe yarıyor mu?
ugoren

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!"));}}

biçimlendirilmiş:

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 (Bonus yok)

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)

Bazı ek talimatlarla (bunu derlemeniz b.exeve çalıştırılabilir dizininizden çalıştırmanız gerekir) buna aşağıdan başlayabilirim:

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 (Bonus yok)

Yukarıdaki talimatların aynısı, bu sefer yalnızca kendi doğum gününde bir mesaj yazdırıyor (yani% -15 bonus yok).

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"==tTarih dizesini aldıktan sonra ekleyerek ve bunun yerine bunu kullanarak bonuslarda birkaç byte tasarruf edebilirsiniz .
ahruss

1
Teşekkürler! "Birkaç bayt" bir çıksa da ... bir şey mi kaçırdım? Edit Ah, anlıyorum; demiştin, ,b="1202"==tancak ==tparça bir mümkün değil, çünkü bir bool olarak değerlendirilir ve diğer var bir dizedir. Bir (var) bildirgesinde iki farklı tip kullanamazsınız (ki, AFAIK).
RobIII,

Ah tamam. Bir süredir C # kullandım. Benim hatam.
ahruss

Dizeleri değil, tarihleri ​​karşılaştırarak basit sürümü kısaltabilirsiniz. Bu adam gibi bir şey kullanıyor CreationTime.Date == DateTime.Today.
svick

Bu sadece bugün / bu yıl / doğum günü için işe yarar. 0 Diğer yıllar için nasıl çalışır?
RobIII

5

Java - 275 - 15% = 233,75 bonus ile / bonus olmadan 237

Bonus ile:

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();}}

Bonus olmadan:

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 Nisan'da doğdum.


1
Mutlu yıllar için değil, için ;-) Sadece sana başka byte :-) kurtardı
robiii

@RobIII Teşekkürler düzeltildi.
Victor Stafusa

Ayrıca, newline ( \n) gerekli değil, başka bir 4 bayt kazandıran AFAIK gerekmiyor ;-)
RobIII

@RobIII Tekrar teşekkürler.
Victor Stafusa,

Evet ... Kendi ayağımı çekmeyi bırakmalıyım: P
Rica ederim

3

Mesajda birkaç byte tasarruf etmek için bu küçük numarayla gurur duyuyorum. Umarım diğer cevaplara da dahil edilir. Bunu ilk düşünen bendim!

piton

105 karakter, fazladan kredi yok. Dosyayı "mutlu yıllar" olarak sakla ve koş. Yalnızca GMT’de çalıştırılır ve "doğum günü" doğum tarihiniz olarak tanımlanır, yıldönümü değil (genellikle "doğum günü" de denir).

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

Çalışması için, bunu "mutlu yıllar" olarak kaydet ve kaç python "happy birthday to me"

Not: Tabii ki, tümü hariç küçük bir önyükleme, dosya adında olabilir; bu da herhangi bir keyfi büyük kodun önyükleme bandına düşmesini sağlar. Normalde bu "aldatmayı" düşünürdüm. Ancak, "mutlu yıllar benim için" mantıksız bir dosya adı değil - programın ne yaptığını, bazı programlardan (örneğin, "python") çok daha iyi olduğunu açıklıyor, bu yüzden bu durumda izin vereceğim :)


Dosya adına güvenmenin aldatma olduğunu düşünüyorum (açıkça yasaklamamıştım). İzin verilirse, neden sadece yazmıyorsunuz eval(sys.argv[0])?
ugoren

Ve bir doğumgünü tanımlamaya zahmet etmedim, ama bir kişinin doğduğunun tam gününü değil, doğum yıldönümünü kutladığı yılda bir kez gelen bir gün .
ugoren

ugoren: En altta yazdığım notta (yorumunuzu önceden yazan) bahsettim. 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 Inc.

2

Matlab: 66

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

Dosya adı 'fm' olmalı


1
On senin doğum günü o "Happy birthday demeliyim sana !" :-)
RobIII

@RobIII: Hata! Haklısın, yeterince dikkatli okumadım. İkinci sürümü kaldıracak. Teşekkürler!
H.Muster

Ben varsayalım strncmp(x, y, 5)gibi tarih karşılaştırır 28-12-2013bireyin ilk 15 karakter (varlık 28-12örn 28 Aralık). Bu yyyy/mm/dd, örneğin kullanıcının yerel ayarları olduğunda da çalışır mı ? Matlab dd-mm-yyyyher zaman varsayılan mıdır? (Sadece merak). Nevermind Düzenle : bulundu! . Öyle görünüyor. Bu madde için zaten olmaz mm/dd/yyyyya dd-mm-yyyyhem sağ hem sol işlenen yine aynı biçimi kullanır ve her ikisi de 5 soldaki karakter zaten maç olacağından; yıl asla lider olmadıkça.
RobIII,

Değişkene neden ihtiyacınız var t? Does not dir('f.m').dateçalışmak?
Şubat'ta ugoren

@ugoren: dosya özniteliklerini döndürmek için tgereklidir dir(aksi takdirde sadece eşleşen dizindeki tüm dosyaları döndürürdü 'f.m'). Ayrıca, alana terişmek için gereklidir date.
H.Muster

2

GNU COBOL -ücretsiz ile, 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.

Ünlülerle ilgili kuralları çiğniyorum, o yüzden bonus yok ...

Üretilen metin kullanıcı girişidir (çalıştırıldığında istenmektedir). Bu iyi gitmiyorsa, tanımlayan satırın ek yedi karakter için Csilinmesi gerekir ACCEPT Cve DISPLAY Colması gerekir DISPLAY "HAPPY BIRTHDAY TO ME!".

WHEN-COMPILEDProgram için mevcut olan derleme tarih / saatini içeren özel bir sicildir (her zaman kullanışlıdır, doğru sürüme sahip olduğunuzu bileceksiniz). MOVEGerisi gerekli olmadığından kesilir . DATEGeçerli tarih - bu bir yymmdd.

/Derleme tarihi eğik içerdiği A nun tanımında, bir yerleştirme düzenleme sembolüdür. Ekstra bir karakter, ancak karşılaştırmayı kolaylaştırır.

Ünlü = Grace Hopper


2

Toplu İş - 37 Bayt

Bash cevaplarından birinin kullandığı yöntemi çalmak ..

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

Diğer yöntem - 145 Bayt

@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

Ruby, 69 characters / bytes

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

31536000bir yıldaki 86400saniye sayısı ve bir gündeki saniye sayısıdır.


4
Ne yazık ki, atime sonrasındaki ilk atılım yılına kadar, sadece en fazla yedi yıl doğru çalışır.
Amadan

Ayrıca doğum gününüzden sonraki sabaha "mutlu yıllar" yazıyor ve doğum gününüzden önceki doğum gününüzün kutlu olsun demiyor.
AMADANON Inc.

1

JavaScript

Node.js, 156 bayt

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!")

Dosyanın değişiklik zamanını kullanır.


seni şu ana kadar 56 byte yenerek = P
stroncium

Sizinkini çalıştırdığımda çalışma zamanı hatası alıyorum, ancak eşleşme yaklaşımı kesinlikle daha akıllıca. Hatayı düzeltin ve benim artı oyumu aldınız. ;)
Chris W.

Hatayı ve işletim sisteminizi alıntılayabilir misiniz? Sanırım sadece çapraz platform değil.
stroncium

1

Powershell - 105 bayt

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!'
}

Bonus buna değmez, sadece 117.5 alabilirim.


1

Powershell - 127

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

% 15 bonus - 151 bayt,% 15 daha az = 128,4

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

1
Powershell uzmanı değilim, ancak bu yalnızca bu yıl işe yarayacak mı? "Program" ın 1., 2., 3. vb. Doğum günleri varken ne olacak?
RobIII

writeKomutu kaldırabilirsiniz - Sadece "happy birthday to me!"yazdırır.
unclemeat

Sen oldukça haklısın. Bunu bilmeliyim.
Chris J,

@Robill - Hata! Başka bir şeyden rahatsız olduğumda bir şeyler yazmaya başladığımda ve kodlayıcıyı erteleme olarak kullandığım zaman budur. Sabit (aklını kazanma şansı olmadığı için).
Chris J

1

Yakut - 80 103 87 bayt

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

Yakut - 123 115 135 121 - 15% = 104.55 97.75 114.75 102.85 puan

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}

Doğum gününüzün yılın neresinde düştüğüne ve bunu temsil etmenin en kısa yoluna bağlı olarak biraz daha uzun veya daha kısa olabilir. Benim için, bu 36e5(çağdan beri saniye; zaman dilimine bağlı).


Mel Gibson sayılıyor mu? İşte 138 bayt -% 35 bonus = 89.7 puanlık program, kendini, beni ve Mel'i kutluyor!

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
Kodunuz, Şubat ayından sonraki tarihler için artık yıllarda başarısız olur.
ugoren

@ugoren haklısın. Bu düzeltildi, ancak çok fazla puan kaybettik :(
Tim S.

Ama şimdi bunların çoğunu geri aldım! =)
Tim S.

0

PureBasic

Bonus olmadan - 142

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

Bonus ile - 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

TI-BASIC, 68 bayt

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

Bu belirteçleri bir byte olduğunu unutmayın: If , Ans, →, Disp. getDateiki bayttır. Diğer tüm tek karakter sembolleri bir bayttır.


1
Bunun UTF-8 olduğundan emin misin?
Şubat'ta

3
OP açıkça UTF-8 kullanmanız gerektiğini belirtir. Bu 66 karakter ve 68 bayttır.
nyuszika7h

2
Bunun 46 bayt olduğunu iddia etmek istiyorsanız, bunu 46 bayta yazın. Şimdi olduğu gibi, 68 bayt.
ta ugoren

Standart bir TI-Basic ortamındaki belirteç boyutlarına göre 55 bayttır, ancak düz metin olarak 68'dir. Ayrıca teknik olarak "sonunda bir bayt kurtarabilmesi için" olması gerekmez.
Lemon Drop

0

J 79

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

Bonus sürümü 120 - 15% = 102

Her ikisi de doğum gününü alırken ikisini de basmak için ekstra kredi alıyor muyum?

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''

Açıklama (sağdan sola):

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

Trenin merkez fiili

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

Merkez tren için sol bölge:

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

Java - 196

Bu, diğer Java gönderiminden, işlem sırasında 41 karakter tıraş eden Dizeler kullanılarak farklılık gösterir. Bir java.util.Date veya bir günün günü String'i biçimlendirmek için String.format ("% tj") kullanır ve ardından bu iki Dizeyi karşılaştırır.

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!");}}

biçimlendirilmiş:

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
Yılın günü artık yıllarla iyi çalışmıyor.
ugoren 5

@ugoren Katılıyorum. Ancak, yarışma şu anda devam ediyor ve 20 Şubat'tayız. derleme verileri birkaç gün için iyi olmalı ve yıllar sonra bir soruna neden olmamalıdır. 28 Şubat'tan sonra derlerken gerçekten bir (gelecek) problemi olacak.
RobIII

28 Şubat'tan sonra
derlersem

0

C # 191 bonus yok

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!");}}

biçimlendirilmiş:

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'i yalnızca iki kez kullanıyorsunuz; var x="MMdd";+ ToString ( x) + ToString ( x) = 15 iken ToString ( "MMdd"); + ToString ( "MMdd"); sadece maliyet 12
RobIII

Ayrıca, bir newline gerekli değildir, bu yüzden WriteLine()kısaltılabilir Write(). Yukarıda ve bu değişiklik olduğunda, benim yaptığımla aynı çözüme
sahipsin

1
Şimdi 193 olan puanı da güncellemelisiniz. Ve 191'e, iki M off * ipucu * 'u tıraş ederek elde edebilirsiniz : P
RobIII

0

JavaScript (node.js) - 100 bayt

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

0

vb.net ~ 161c

Bu kutlama mesajını doğum günü olan herkese yazdıracak.

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

Alan => Alan Kaye

Puan: 253c (-33c vb.net dk.) = 220 - 15% (doğum günü bonusum) = 187c - 14% (Celeb Doğum Günü) = 160.82 ~ 161c veya 220c - 29% = 156.2 ~ 157c


Doğum günün ya da şöhretin için ikramiye alabilirsin. İkiside değil.
ugoren

@ugoren Scoring bunun münhasır bir durum olduğunu söylemez veya bu yüzden veya nin mantıksal anlamını kullanıyorum.
Adam Speight

0

Powershell, 82 bayt

ayrıca bkz. Chris J ve SpellingD

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

nerede

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

ifade için kısayolların ve diğer adların birleşimidir :

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

kanonik bir formda eşdeğer:

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

Powershell, 119 bayt -% 14 = 102,34 Puan

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 $_!"}

At 3 Ocak , senaryo ekrana Happy birthday to Prof!. Bu komut dosyası 3 Ocak'ta kaydedilmişse, iki tebrik görüntülenir.


-1

63 bayt

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

Derleme zamanını seçiyorum . C # kodu derlerken yana MSIL üzerinde çalışma zamanı derlenmektedir zamanında JIT Derleyici tarafından çalıştırılabilir koda , bu program koşulları karşılar.

EDIT - Yorumlarda işaret edildiği gibi muhtemelen geçersiz cevap.


1
Eski numara, artık geçerli değil. Kural 2 "programın başlatılmasından veya yürütülmesinden hiçbir şekilde etkilenmemesi gerektiğini" söylüyor.
11

buna göre güncellendi. Thank You @ugoren
rahulroy9202

@ugoren Phil H'in PERL kodu da aynı numarayı kullanıyor. Oylanan en yüksek cevabı kontrol edin.
rahulroy9202

2
Aynı zamanda geçersiz bir cevap. Ama - bu numarayı ilk kullanan kişi oydu ve o sırada kurallara izin verdi.
ugoren
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.