2015-05-18 4 views
-1

Мне нужен метод 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 
+0

Может быть, это я, но я не понимаю, что должен делать метод монеты, может ли вы поставить псевдокод этого, может быть, он станет яснее для меня. – nbeck

+0

В чем вопрос? – sawa

+0

@sawa В принципе, как создавать подмассивы, пока все элементы не будут 0 – user2181402

ответ

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 
Смежные вопросы