スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

今年は厄年か

今年のカレンダを見て欝になった。
祝日が土曜日というのが今年は多すぎる。
前後10年調べても一番多い。

どれだけ損しているか、スクリプトを作ってみた。通常の祝日に加え、12/31-1/3は祝日扱いにした。この辺は人によって違ってくると思うので適宜調整が必要。

saturday.rb で保存して、ruby -Ks saturday.rb <年>で実行


require 'date'

year = Integer(ARGV[0])
if year < 1980 || year > 2099 then
  print "warning: the result may not be correct\n"
end

shubun = "3/" + String(Integer(20.8431+0.242194*(year-1980)-(year-1980)/4))
shunbun = "9/" + String(Integer(23.2488+0.242194*(year-1980)-(year-1980)/4))

#Holidays List
holidays = ["1/1","1/2","1/3","1/15","2/11",shubun,"4/29","5/3","5/4","5/5","7/20","9/15",shunbun,"10/10","11/3","11/23","12/23","12/31"]

#remove happy monday
if year >= 2000 then
  holidays.delete("1/15");
  holidays.delete("10/10");
end

if year >= 2003 then
  holidays.delete("7/20");
  holidays.delete("9/15");
end

#p holidays

#successive holidays (翌日が祝日あるいは代休なしの休日)
sucHolidays = ["1/1","1/2","1/3","5/3","5/4","12/31"]

count = 0

puts "土曜日が祝日になる日付"
holidays.each {|holiday|
  str = String(year) + "/" + holiday
  target = Date.parse(str)
  if target.cwday == 6 then
    puts "  " + str
    count += 1
  end
}

puts "日曜日が祝日で振替休日がない日付"
sucHolidays.each {|holiday|
  str = String(year) + "/" + holiday
  target = Date.parse(str)
  if target.cwday == 7 then
    puts "  " + str
    count += 1
  end
}

puts "自由時間の損失・計: " + String(count) + "日"


まあ、もっとポジティブに考えて3連休になる日を出すようにするのもいいかな。

でも、rubyってそんなに使いやすいと思わないな。++でインクリメントができなかったり、型宣言がないというものの、使うときは厳しく、Stringとintを+で連結できないとか。javaでもできるのに。

cf. 休日について
http://www5a.biglobe.ne.jp/~accent/kazeno/calendar/
http://allabout.co.jp/travel/airticket/closeup/CU20051205A/?FM=rss


関連記事
スポンサーサイト

コメント

非公開コメント

プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。