示例:函数
frequencies (3,[0,1,1,0,1,1]) should return [2,4,0]
这就是我所拥有的:
def minPosFrom (a, pos)
min = a[pos]
minPos = pos
for i in pos+1 .. a.size-1 do
if a[i] < min
then minPos =i
min = a[i]
end
end
return minPos
end
def swap!(a,i,j)
dummy = a[i]
a[i] = a[j]
a[j] = dummy
end
def minSort!(a)
for i in 0 .. a.size-2 do
pos = minPosFrom(a,i)
swap!(a,i,pos)
end
return a
end
def frequencies(a)
minSort!(a)
b=1
i=0
while a[i]==a[i+1] do
b=b+1
i=i+1
return (b)
end
end
现在
p(frequencies([0,1,1,0,1,1]))
为我提供了两个前导零的2
。这很好。但是我希望整个事情能够继续下去并为后面的四个事件获得4
,所以[2,4]
。实际上如果[2,4,0]
我需要n=3
,但我还没有定义n
,但我认为一旦我得到程序给我这不会很难做到数组中重复数的数量......
期望看到:p(频率([0,1,1,0,1,1])) - &gt; [2,4,0] 实际上看:p(频率([0,1,1,0,1,1])) - &gt; [2] 尝试过:各种循环和其他功能。
答案 0 :(得分:5)
def frequencies(n, array)
n.times.map { |num| array.count(num) }
end