我正在做一个红宝石卡塔,在给定阵列的情况下返回一组完美的正方形。像4这样的完美广场将产生2.0。一个不完美的数字将是一个小数,如2.343等。我想让它工作,这样,如果十分位数不是零,它将丢弃数字。有什么想法吗?
我会使用模数,但我不认为它可以用于我想要做的事情。我想知道是否有一个除模数之外的方法可以抓取一个数字的余数进行比较。我看到了zero?
,divmod
和其他几个人的红宝石文档,但他们并没有完全按照我的需要做。
这是我的代码:
def get_squares(array)
array.to_a.drop_while do |number|
Math.sqrt(number) #== drop if remainder is something other than .0
end
end
get_squares((1..16))
答案 0 :(得分:0)
你可以这样做:
class Float
def is_int?
self.to_i == self
end
end
def get_squares(array)
array.select { |number| Math.sqrt(number).is_int? }
end