创建数组数组

时间:2015-05-18 03:24:45

标签: arrays ruby multidimensional-array

我需要一个方法coins,它接受​​一个整数并将其映射到整数除以2到4之间的数字。我需要继续这样做,直到所有数字都达到零,然后计数数组中的元素。示例如下:

coins(5) # => 11

这推导如下:

# 5
# => [2, 1, 1]
# => [[1, 0, 0], [0, 0, 0], [0, 0, 0]] 
# => [[[0, 0, 0], 0, 0], [0, 0, 0], [0, 0, 0]]

如果向下舍入的数字不等于0,则下面是数组的每个索引需要发生的事情。

def coins(n)
  arr = (n/2), (n/3), (n/4)
  i = 0
  while i < arr.length
    if arr[i] != 0
      arr[i] = (n/2), (n/3), (n/4)
    end
    i += 1
  end
end

1 个答案:

答案 0 :(得分:3)

def coins n
  a = [n]
  a.replace(a.flat_map{|e| e.zero? ? e : [e/2, e/3, e/4]}) until a.all?(&:zero?)
  a.length
end

coins(5) # => 11