定义一个期望数字n和数组a的函数,并返回一个大小为n的数组,其结果包含数字i的出现

时间:2014-01-15 13:11:17

标签: ruby

示例:函数

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] 尝试过:各种循环和其他功能。

1 个答案:

答案 0 :(得分:5)

def frequencies(n, array)
  n.times.map { |num| array.count(num) }
end