我有一个填充了0,1,3和4的数组,并想要检查数组内部,这样一旦找到一定数量的4,就会出现错误的声明。
答案 0 :(得分:3)
使用count
方法。
alist.count(4) >= n
# => true or false
n
将是您要检查的特定号码。
答案 1 :(得分:0)
文档是开始回答这类问题的最佳位置,ruby在Array和Enumerable上有一套非常丰富的功能
def enough_4s?(array, how_many)
array.count(4) >= how_many
end
array = [1,1,1,2,3,4,4,4]
enough_4s?(array, 3)
#=> true
enough_4s?(array, 4)
#=> false
答案 2 :(得分:0)
[0,1,3,4,3].count(4) > 2 => false
(例如2是预期的数量)
答案 3 :(得分:0)
如果目标是在找到足够的4s后立即停止搜索,请使用each
或find
或同等内容,return
或break
而不是count
。例如:
n = 2
([0,1,3,4]*5).find do |i|
n -= 1 if i == 4
break false if n == 0
end
# false
答案 4 :(得分:0)
另一种解决方案,可以尽快停止使用any?
:
def has_at_least?(arr, val, min)
arr.any? do |i|
i == val && (min -= 1).zero?
end
end
has_at_least?([0,1,3,4]*5, 4, 2)
# => true
has_at_least?([0,1,3,4]*5, 4, 7)
# => false