나에게 생일 축하해!


21

나에게 생일 축하해!

Happy birthday to me!생일에 인쇄하는 프로그램을 작성하십시오 .

  1. 프로그램의 생일은 프로그램의 생성, 마지막 수정 또는 컴파일 시간 (선택)이며 하드 코딩되어서는 안됩니다.
  2. 생일로 사용한 날짜는 프로그램의 호출 또는 실행에 영향을 받아서는 안됩니다. 생일을 수정할 수 없습니다.
  3. 추가 크레딧 (-15 % 바이트 수) 을 위해 프로그램 과 일치하지 않는Happy birthday to you! 생일 (하드 코드)에 인쇄 하십시오 . 또는 유명인의 생일을 사용하여 -14 %를 얻습니다.
  4. 이 날짜 만 인쇄해야하며 다른 날에는 아무것도 인쇄하지 않아야합니다.
  5. 바이트 수를 UTF-8로 계산하십시오.
  6. 그레고리력을 사용하십시오.

행운과 생일 축하합니다 (신생아 프로그램).

PS
Izkata의 의견에 따라 Mel Kaye 의 생일 Happy birthday to Mel에 인쇄 하면 20 % 할인됩니다. 그러나이 날짜에 해당하는 믿을만한 정보를 제공해야합니다.


1
@TeunPronk, 당신은 둘 다 할 수 없습니다. 자신의 생일을 사용하거나 유명인의 생일을 사용하거나 추가 크레딧을 포기하십시오.
ugoren

4
@TeunPronk : Jon Skeet만이 할 수있는 일 : P
MSalters

11
나는 사이드 뜨거운 질문이를보고 "로 생일 읽기 멜을 ..."
Izkata

1
@PeterTaylor : 응? 추가 기능에 대해 다양한 종류의 점수 보너스를 수여하는 것은 코드 골프 질문에 매우 일반적이며 , 기본 점수 기준이 코드 길이 인 한 다른 사람이 해당 태그를 사용하지 못한다고 주장한 적이 없습니다 .
Ilmari Karonen

1
@Izkata, Mel을 기리기 위해 질문을 업데이트했습니다.
ugoren

답변:


10

PHP 77 75 74 65 60

Tim Seguine 의 훌륭한 제안에 감사드립니다 .

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

은밀한 PHP : 46 42 41 40

Phil H의 아이디어Tim Seguine의 제안을 다시 사용 하십시오 .

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

비교에 연도를 포함하지 않습니까? 그렇다면 0 번째 생일에만 작동합니다.
ugoren

@ugoren 당신이 맞아요! 수정 해 주셔서 감사합니다. 2 바이트가 저장되었습니다.
ComFreek

규칙에서 "아무것도 preintn't"가 표준 출력을 의미하는 것으로 해석 ''되면 dm문자열 주위 를 제거하여 4 바이트를 이길 수 있습니다. 경고가 발생했지만 오류보고가 켜져 있으면 표준 오류로 전송된다고 생각합니다.
Tim Seguine

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

1
@TimSeguine 제안 해 주셔서 감사합니다! 나는 그것들을 나의 대답에 포함시켰다.
ComFreek

48

배쉬 (비열한) : 36

touch $0;echo Happy Birthday to me\!

규칙에 따르면 : "프로그램의 작성, 수정 또는 컴파일 시간". 수정 시간과 영구적 인 자체 수정을 선택합니다. [HT @ace for 1 char]

펄 (비열한) : 29

print "Happy birthday to me!"

이것은 첫 번째 것보다 비열한 것입니다. 펄 프로그램은 실행되기 전에 항상 컴파일됩니다. 모든 사람이 아는 것은 아닙니다. 그래서 여기에 내가 사용하고있는 편집 날짜가 있습니다.

-규칙 변경을위한 편집-

생일 변경에 관한 규칙이 있기 전에 작성되었습니다. 나는 Perl이 여전히 서 있다고 생각한다. 모든 Perl 프로그램은 실행되기 전에 컴파일됩니다. 교육적인 이유로 여기에 답을 남겨 드리겠습니다!


6
좋아, 사기꾼, 영리함을 위해 내 +1을 가져와
Victor Stafusa

1
!with 를 피하고 \!따옴표를 제거하여 1 개의 문자를 저장하십시오
user12205

1
좋은 속임수이지만 규칙은 명시 적으로 금지합니다 (현재).
ugoren

1
@ugoren 여전히 프로그램을 시작 하기 전에 컴파일되는 perl 솔루션을 금지하지 않습니다 .
Cruncher

3
@Cruncher, 당신이 옳아 걱정입니다. 변호사와 상담하고 청구서를 보내 드리겠습니다.
ugoren

13

강타-65

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

도움 을 주신 ugoren , acenyuszika7h 에게 감사합니다 .


난 당신이 벗어날 수 있다고 생각 !\!당신이 따옴표를 필요가 없습니다 1 개 문자 저장합니다.
user12205

실제로 에코에 공백이 필요할 것이라고 생각했기 때문에 따옴표가있었습니다. 나는 그들을 꺼내서 느낌표를 벗어나지 않았으며 여전히 효과가있었습니다. 팁 고마워!
shiona

2
!스크립트가 아닌 대화식 쉘 에서만 이스케이프하면 됩니다.
nyuszika7 시간

당신은 사용하여 두 개의 문자를 저장할 수 []대신 [[하고 ]].
nyuszika7 시간

1
연도가 생성 날짜와 동일하지 않은 경우 작동합니까?
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!"));}}

형식화 :

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날짜 문자열을 얻은 후 추가 하고 대신 사용하여 보너스 바이트에 몇 바이트를 절약 할 수 있습니다.
ahruss

1
감사! "몇 바이트"가 1로 밝혀 지지만 뭔가 빠졌습니까? 편집 아, 나는 본다; 당신은 말 ,b="1202"==t했지만 그 ==t부분은 부울로 평가되고 다른 var는 문자열이기 때문에 불가능합니다. 하나의 "var"선언에서 두 개의 다른 유형을 사용할 수 없습니다 (즉, AFAIK).
RobIII

아, 알았어요 C #을 사용한 지 오래되었습니다. 내 잘못이야.
ahruss

문자열이 아닌 날짜를 비교하여 간단한 버전을 줄일 수 있습니다. 이 망은 같은 것을 사용합니다 CreationTime.Date == DateTime.Today.
svick

그것은 오늘 / 올해 / 생일 0에만 효과가 있습니다. 다른 몇 년 동안 어떻게 작동합니까?
RobIII

5

Java-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 일 4 월에 태어났다.


1
생일 축하 로는 ,하지 에 대한 ;-) 그냥 당신에게 다른 바이트 :-) 저장
RobIII

@RobIII 감사합니다.
Victor Stafusa

또한 개행 ( \n)은 AFAIK가 필요하지 않으므로 추가로 4 바이트를 절약 할 수 있습니다. ;-)
RobIII

@RobIII 다시 감사합니다.
Victor Stafusa

그래 ... 난 내 발을 멈춰야 해 : P 천만에요;)
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"

참고 : 물론 작은 부트 스트랩을 제외한 모든 파일 이름이 파일 이름에있을 수 있으므로 임의로 큰 코드가 부트 스트랩으로 줄어 듭니다. 일반적으로 나는이 "속임수"를 고려할 것입니다. 그러나 "생일 축하해"는 부당한 파일 이름이 아닙니다. 프로그램이 수행하는 작업을 일부 프로그램 (예 : "python")보다 훨씬 우수하므로이 경우에는 허용하겠습니다.)


나는 파일 이름에 의존하는 것이 부정 행위라고 생각합니다 (명시 적으로 금지하지는 않았지만). 허용된다면 왜 쓰지 eval(sys.argv[0])않겠습니까?
ugoren

그리고 생일을 정의하는 것을 귀찮게하지 않았지만 , 사람이 태어난 기념일을 축하하는 날은 일년에 한 번 입니다. 당신이 태어난 정확한 날이 아닙니다.
ugoren의

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 Inc.

2

MATLAB : 66

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

파일 이름은 'fm'이어야합니다


1
당신의 생일이 "에 생일 축하 말을해야 당신 !" :-)
RobIII

@RobIII : 죄송합니다. 충분히 읽어 보지 못했습니다. 두 번째 버전을 제거합니다. 감사!
H.Muster

나는 첫 15 자 ( 예 : 12 월 28 일) strncmp(x, y, 5)와 같은 날짜를 비교 한다고 가정 합니다 . 예를 들어 사용자의 로케일 설정이 작동합니까 ? Matlab은 항상 기본 설정 입니까? (그냥 궁금하다). 네버 마인드 편집 : 찾았습니다! . 그럴 것 같습니다. 이 문제 어쨌든에 대한 않을 것 또는 모두 왼쪽과 오른쪽 피연산자 어쨌든 같은 형식을 사용하고 모두 5 개 왼쪽 문자 어쨌든 일치합니다 이후; 올해가 결코 앞서지 않는 한. 28-12-201328-12yyyy/mm/dddd-mm-yyyymm/dd/yyyydd-mm-yyyy
RobIII

왜 변수가 필요 t합니까? dir('f.m').date작동 하지 않습니까?
ugoren

@ugoren : 파일 속성 tdir반환해야합니다 (그렇지 않으면 일치하는 디렉토리의 모든 파일을 반환합니다 'f.m'). 또한 현장 t에 액세스하려면 필요 date합니다.
H.Muster

2

자유, 204를 가진 GNU 코볼

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현재 날짜입니다-이 날짜는 yymmdd입니다.

/컴파일 날짜가 슬래시를 포함하고 있기 때문에 (A)의 정의는, 삽입 편집 상징이다. 추가 문자이지만 비교가 용이합니다.

유명인 = Grace Hopper


2

배치-37 바이트

Bash 답변 중 하나에서 사용하는 방법을 훔칩니다 ..

@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

315360001 년 86400의 초 수이며 하루의 초 수입니다.


4
불행히도, 당신이 시간이 지나고 첫 윤년이 나올 때까지 최대 7 년 동안 만 제대로 작동합니다.
Amadan

또한 생일 후 아침에 "생일 축하합니다"라고 말하고 생일 전 생일 아침을 생일이라고 말하지 않습니다.
AMADANON Inc.

1

자바 스크립트

Node.js, 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 바이트
뛰기

내가 당신을 실행할 때 런타임 오류가 발생하지만 일치 접근 방식은 훨씬 더 영리합니다. 오류를 수정하면 공감대가 생겼습니다. ;)
Chris W.

오류와 OS를 인용 할 수 있습니까? 나는 그것이 크로스 플랫폼이 아니라고 생각합니다.
stroncium

1

Powershell-105 바이트

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

언 골프 드 :

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

보너스는 그만한 가치가 없으며 117.5 만 얻을 수 있습니다.


1

파워 쉘-127

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
나는 powershell 전문가가 아니지만 이것은 올해에만 작동합니까? "프로그램"에 1, 2, 3 등의 생일이 있으면 어떻게 되나요?
RobIII

당신은 write명령을 제거 할 수 있습니다 -그냥 "happy birthday to me!"인쇄됩니다.
unclemeat

네 말이 맞아 나는 그것을 알아야한다.
Chris J

@Robill-죄송합니다. 그것이 내가 다른 것에 의해 산만하고 codegolf를 지연으로 사용할 때 무언가를 작성하는 것입니다. 수정되었습니다 (승리 할 기회가 없다는 것이 아닙니다).
Chris J

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
윤년에는 2 월 이후의 날짜에 코드가 실패합니다.
ugoren

@ugoren 맞습니다. 수정했지만 많은 점수를 잃었습니다. (
Tim S.

그러나 지금 나는 그것들의 대부분을 되찾았습니다! =)
Tim S.

0

순수한 기본

보너스없이-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

TI-BASIC, 68 바이트

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

이 토큰은 1 바이트 If , Ans, →, Disp입니다. getDate2 바이트입니다. 다른 모든 한 문자 기호는 1 바이트입니다.


1
UTF-8입니까?
Fozzedout

3
OP는 명시 적으로 UTF-8을 사용해야한다고 명시합니다. 66 자, 68 바이트입니다.
nyuszika7 시간

2
46 바이트라고 주장하려면 46 바이트로 작성하십시오. 지금은 68 바이트입니다.
ugoren

표준 TI-Basic 환경의 토큰 크기에 따르면 55 바이트이지만 일반 텍스트로는 68입니다. 또한 기술적으로 바이트를 절약 할 수 있도록 끝에 ""가 없어도됩니다.
Lemon Drop

0

J 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 제출과 다릅니다. String.format ( "% tj")을 사용하여 java.util.Date 또는 long을 연도 문자열로 형식화 한 다음이 두 문자열을 비교합니다.

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
연도는 윤년과 잘 맞지 않습니다.
ugoren

@ugoren 동의합니다. 그러나 컨테스트가 현재 진행 중이며 2 월 20 일에 있습니다. 컴파일 데이터는 며칠 동안 문제가되지 않으며 몇 년 동안 문제가되지 않습니다. 2 월 28 일 이후에 컴파일 할 때 실제로 (미래) 문제가 발생합니다.
RobIII

나는 2 월 28 일 이후에 컴파일한다면 나는 "% TM % TD"여섯 점 문자 비용에 문자열 형식 변경 될 수 있습니다
timxyz

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입니다.
RobIII

또한, 줄 바꿈이 그렇게 필요하지 않습니다 WriteLine()단축 할 수있다 Write().
위와이

1
점수도 업데이트해야합니다 (지금 193). 그리고 당신은 두 개의 M을
깎아서

0

자바 스크립트 (node.js)-100 바이트

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

0

vb.net ~ 161c

생일 축하 메시지를 모든 사람에게 인쇄합니다.

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

앨런 => 앨런 케이

점수 : 253c (-33c vb.net min) = 220-15 % (내 생일 보너스) = 187c-14 % (Celeb Birthday) = 160.82 ~ 161c 또는 220c-29 % = 156.2 ~ 157c


당신은 당신의 생일 또는 유명 인사에 대한 보너스를 얻을 수 있습니다. 둘 다 아닙니다.
ugoren

@ugoren Scoring은 독점적이라고 말하지 않으므로 or의 논리적 의미를 사용하고 있습니다.
Adam Speight

0

파워 쉘, 82 바이트

Chris JSpellingD의 답변도 참조하십시오.

"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

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

에서 1월 3일 , 스크립트 표시 Happy birthday to Prof!. 이 스크립트가 1 월 3 일에 저장되면 두 개의 인사말이 표시됩니다.


-1

C #-63 바이트

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

컴파일 시간을 선택합니다 . 에 C # 코드 컴파일 이후 MSIL런타임 컴파일 JIT 컴파일러에 의해 실행 가능 코드로 프로그램은 조건을 충족합니다.

편집-주석에서 지적한 것처럼 잘못된 답변 일 수 있습니다.


1
오래된 트릭으로 더 이상 유효하지 않습니다. 규칙 2는 "프로그램의 실행 또는 실행에 영향을받지 않아야합니다"라고 말합니다.
ugoren

그에 따라 업데이트되었습니다. 감사합니다 @ ugoren
rahulroy9202

@ugoren Phil H의 PERL 코드도 이와 동일한 기법을 사용합니다. 가장 높은 투표 응답을 확인하십시오.
rahulroy9202

2
또한 잘못된 답변입니다. 그러나 그는 먼저이 트릭을 사용했으며 당시에는 규칙을 허용했습니다.
ugoren
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.