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

あらためてDelphi(Pascal)で書いてみると。他の言語と比べて変数が多くなってしまう感じです。

現在、手元にDephiがなかったのでFree PascalのDelphi互換(-Mdelphiオプション)でコンパイルしています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
program Doukaku197;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  Day, Max: TDateTime;
  Y, M, D:  Word;
  I:        Integer;
begin
  Day := Date;
  Max := EncodeDate(2013, 12, 31);
  I   := 0;
  while Day <= Max do
  begin
    DecodeDate(Day, Y, M, D);
    if (D = 13) and (DayOfWeek(Day) = 6) then
    begin
      WriteLn(Y, '/', M, '/', D);
      Inc(I);
    end;
    Day := Day + 1;
  end;
  WriteLn(I, ' days');
end.

Index

Feed

Other

Link

Pathtraq

loading...