Ruby: Multiply All Elements of an Array

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
Author

Alexander Ross

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