私は以下を作成しました、それはうまくいきます、しかしそれは非常に不可解なようです。よりRuby風または理解しやすい方法でそれを書く方法はありますか?
このメソッドは、数値より下の要素を削除します。したがって、を10.high_factors
返します[6,7,8,9,10]
。6は2で割り切れるので、2は削除されます。リストには6を超える倍数はないため、そのまま残ります。
class Fixnum
def high_factors
# Get the numbers that are not divisible by lower ones below self
list = (2..self).to_a
2.upto(self).each do |i|
((i+1)..self).each { |j| list.delete i if j.is_divisible_by? i }
end
list
end
def is_divisible_by? divisor
self % divisor == 0
end
end
Ruby 1.9.3