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

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

Alexander Ross

Alexander Ross

Gaming, Esports & Interactive Media Writer

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.

Share this article
Twitter Facebook Pinterest