Ruby: Multiply all elements of an array

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?

1

4 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(:*) 
7

There 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 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like