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

use*_*205 0 ruby

示例:该功能

frequencies (3,[0,1,1,0,1,1]) should return [2,4,0]
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的:

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
Run Code Online (Sandbox Code Playgroud)

现在

p(frequencies([0,1,1,0,1,1]))
Run Code Online (Sandbox Code Playgroud)

给了我一个2两个前导零.这很好.但是我希望整个事情能够继续下去并且为了4以下四个而获得一个,所以[2,4].其实我需要[2,4,0]n=3,但我还没有定义的n,但我想这不会是很难做到的,一旦我得到的程序给我重复号的数量在一个数组...

期望看到:p(频率([0,1,1,0,1,1])) - > [2,4,0]实际上看到:p(频率([0,1,1,0,1, 1])) - > [2]尝试:各种循环和其他功能.

Iva*_*sov 5

def frequencies(n, array)
  n.times.map { |num| array.count(num) }
end
Run Code Online (Sandbox Code Playgroud)