せっかくアカウントをとったので、テストがてらプログラムを載せてみる。
お題は、どう書く.orgにあった、一番最近の問題で。
問題の内容は、
どう書く.org - LL Golf Hole 3 - 13日の金曜日を数え上げるを参照のこと。
ruby>>
require 'date'
from = DateTime.now
to = DateTime.parse("2013-12-31")
puts (from..to).find_all{|d| d.wday==5 and d.mday==13}.size
<<ruby
こんな感じになりました。
コードがちゃんとハイライトされてる!
s21g blogすごくイイ!!
こんな便利なブログサービスを提供してくれている瀧内さんに感謝、感謝です。
posted by
y_tsuda on Thu 7 Aug 2008 at 11:07 with 3 comments
ruby>>
from.upto(to)
<<--
はruby-1.8.7でもEnumratorを返してくれないことに気がついた。
ruby-1.8.6なら、date.rb(僕の環境では/usr/lib/ruby/1.8/date.rb)を直接編集したら、Enumratorを返すようになりますね。
/usr/lib/ruby/1.8/date.rb 1300行目くらい
ruby>>
# require 'enumerator'
# Step the current date forward +step+ days at a
# time (or backward, if +step+ is negative) until
# we reach +limit+ (inclusive), yielding the resultant
# date at each step.
def step(limit, step=1) # :yield: date
=begin
unless block_given?
return to_enum(:step, limit, step)
end
=end
da = self
op = %w(- <= >=)[step <=> 0]
while da.__send__(op, limit)
yield da
da += step
end
self
end
<<ruby
を
ruby>>
require 'enumerator'
# Step the current date forward +step+ days at a
# time (or backward, if +step+ is negative) until
# we reach +limit+ (inclusive), yielding the resultant
# date at each step.
def step(limit, step=1) # :yield: date
#=begin
unless block_given?
return to_enum(:step, limit, step)
end
#=end
da = self
op = %w(- <= >=)[step <=> 0]
while da.__send__(op, limit)
yield da
da += step
end
self
end
<<ruby
です。
こんな感じでEnumratorを返してくれます。
ruby>>
from.upto(to)
#=> #<Enumerable::Enumerator:0x7f816d87ae88>
<<ruby
コメントアウトしてるだけってことは、いつかはこのコメントが外れるときがくるんですかね?
ソース見たらいろいろ=begin =endでコメントアウトされてることろがありますねー。
面白い。