Ruby – Enumerable – reduce Solution

In this post, we will solve Ruby – Enumerable – reduce HackerRank Solution. This problem (Ruby – Enumerable – reduce) is a part of HackerRank Ruby series.

A common scenario that arises when using a collection of any sort, is to get perform a single type of operation with all the elements and collect the result.

For example, a `sum(array)` function might wish to add all the elements passed as the array and return the result.

A generalized abstraction of same functionality is provided in Ruby in the name of `reduce` (`inject` is an alias). That is, these methods iterate over a collection and accumulate the value of an operation on elements in a base value using an operator and return that base value in the end.

Let’s take an example for better understanding.

``````>>> (5..10).inject(1) {|product, n| product * n }
=> 151200``````

In above example, we have the following elements: a base value 1, an enumerable (5..10), and a block with expressions instructing how to add the calculated value to base value (i.e., multiply the array element to product, where product is initialized with base value)

So the execution follows something like this:

``````# loop 1
n = 1
product = 1
return value = 1*1

# loop 2
n = 2
product = 1
return value = 1*2

n = 3
product = 2
return value = 2*3

..``````

As you can notice, the base value is continually updated as the expression loops through the element of container, thus returning the final value of base value as result.

Other examples,

``````>>> (5..10).reduce(1, :*)   # :* is shorthand for multiplication
=> 151200``````

Consider an arithmetico-geometric sequence where theÂ nthÂ term of the sequence is denoted byÂ tn = n2 + 1, n >= 0. In this challenge, your task is to complete theÂ `sum`Â method which takes an integerÂ `n`Â and returns theÂ sum to the n terms of the series.

Solution – Ruby – Enumerable – reduce Solution

```def sum_terms(n)
nth_term = (n**2)+1
(1..n).reduce(0){|sum, n| sum+(n**2+1)}
end
```

Note: This problem (Ruby – Enumerable – reduce) is generated by HackerRank but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.