challenge LL Golf Hole 3 - 13日の金曜日を数え上げる

今日から2013年12月31日までの、13日の金曜日とその総数を表示してください。

余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。

※LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/usr/bin/env ruby
require 'date'

from = DateTime.now
to = DateTime.parse("2013-12-31")

friday = (from..to).inject(0) do |friday, date|
    if date.mday == 13 and date.wday == 5 then
        puts date.strftime('%Y-%m-%d')
        friday + 1
    else
        friday
    end
end

puts friday

Posted feedbacks - PHP

PHPがなかったので。 あまりうまく書けませんでしたが。

1
2
3
for($i=new DateTime;$i<=new DateTime('2013-12-31');$i->modify('+1 day')){
 if($i->format('wd')==513){$s.=$i->format('Y-m-d ');++$n;}
}echo$s,$n;

1
2
<?for(;1388415600>$t=strtotime($i++."day");$c+=date(dw,$t)-135?0:print date("Y-m-d
",$t));echo$c;

http://ja.doukaku.org/comment/7029/ だいらさんの投稿を参考に少し縮めました。まだ負けてますが、マジックナンバーぽいのが少ないと言うことで。

1
<?for($i=time();$i<mktime(0,0,0,1,1,14);$i+=86400)$n+=date(wd,$i)-513?0:print date(YMj_,$i);echo$n;

Index

Feed

Other

Link

Pathtraq

loading...