Array#step


hack rubyシリーズ...


class Array
  def step(n)
    if block_given?
      (0..size).step(n) {|i| yield self[i]}
    else
      raise ArgumentError
    end
  end
end

[1,2,3,4,5].step(2) do |i|
  puts i
end

# => 1, 3, 5




続けて
class Float
  def four_remove_and_five_pass(n)#    ...     poor English..
    wei = Array.new(n,10).inject(1){|sum,i| sum*i}
    (self * wei).round / wei.to_f 
  end
end

puts 1.5555.four_remove_and_five_pass(3)#  3   =>1.55