Let's say I have an array A = [1, 2, 3, 4, 5]
how can I multiply all elements with ruby and get the result? 1*2*3*4*5 = 120
and what if there is an element 0 ? How can I ignore this element?
14 Answers
This is the textbook case for inject (also called reduce)
[1, 2, 3, 4, 5].inject(:*) As suggested below, to avoid a zero,
[1, 2, 3, 4, 5].reject(&:zero?).inject(:*) 7There is also another way to calculate this factorial! Should you want to, you can define whatever your last number is as n.
In this case, n=5.
From there, it would go something like this:
(1..num).inject(:*) This will give you 120. Also, .reduce() works the same way.
Well, this is a dummy way but it works :)
A = [1, 2, 3, 4, 5] result = 1 A.each do |i| if i!= 0 result = result*i else result end end puts result If you want to understand your code later on, use this: Assume A = 5, I used n instead of A
n = 5 n.times {|x| unless x == 0; n = n * x; ++x; end} p n To carry it forward, you would:
A = [1,2,3,4,5] arb = A.first a = A.count a.times {|x| arb = arb * A[x]; ++x} p arb