カレンダーを表示する
以下のようにコマンドラインから起動するとカレンダーを表示してくれるプログラムです。引数がなければ、実行時の年月のカレンダーを、年と月が指定されていれば、当該年月のカレンダーを表示します。
$ ruby cal.rb
====== 2014/ 8 ======
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 28 29 30
31
$ ruby cal.rb 2014 9
====== 2014/ 9 ======
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
28 29 30
これは、Ruby教室の課題として出題したもので、以下が解答例です。仕様がバラバラになると大変なので、d1,d2を定義する行までは予め公開してありました。つまり、offsetの定義とd1,d2を使ったeachループの中身の実装方法が課題の骨子です(残念ながら正解者ゼロ!)。
require 'date'
year = ARGV[0] ? ARGV[0].to_i : Date.today.year
month = ARGV[1] ? ARGV[1].to_i : Date.today.month
puts "====== %4d/%2d ======" % [year,month]
d1 = Date.new(year,month,1)
d2 = Date.new(year,month,-1)
offset = d1.wday
offset.times do print " " end
(d1.day..d2.day).each do |d|
print " %2d" % d
if (d + offset) % 7 == 0 then
print "\n"
end
end
print "\n"
参考URL
- EnglishWorm.com
- SinglesFan.com
- LmLab.net
- サイトマップ
- 運営者について