HackerRank Lambdas problem solution in ruby

In this HackerRank Lambdas, the problem solution in ruby programming Lambdas is anonymous functions. Lambdas in Ruby are objects of the class Proc. They are useful in most of the situations where you would use a proc. The simplest lambda takes no argument and returns nothing as shown below:

Example:

#Ruby version <= 1.8

    lambda { …. } 

    lambda do

        ….

    end

#Ruby version >= 1.9, “stabby lambda” syntax is added

    -> { …. }

    -> do

        ….

    end

Ruby version >= 1.9 can use both lambda and stabby lambda, ->.

Lambdas can be used as arguments to higher-order functions. They can also be used to construct the result of a higher-order function that needs to return a function.

You are given a partially complete code. Your task is to fill in the blanks (______).

There are 5 variables defined below:

  1. square is a lambda that squares an integer.
  2. plus_one is a lambda that increments an integer by 1.
  3. into_2 is a lambda that multiplies an integer by 2.
  4. adder is a lambda that takes two integers and adds them.
  5. values_only is a lambda that takes a hash and returns an array of hash values.
hackerrank lambdas problem solution in ruby programming

Problem solution.

# Write a lambda which takes an integer and square it
square      = ->(a) { a * a }

# Write a lambda which takes an integer and increment it by 1
plus_one    = ->(a)  { a += 1}

# Write a lambda which takes an integer and multiply it by 2
into_2      = ->(a) { a * 2 } 

# Write a lambda which takes two integers and adds them
adder       = ->(a,b) { a + b } 

# Write a lambda which takes a hash and returns an array of hash values
values_only = ->(a) { a.values } 


input_number_1 = gets.to_i
input_number_2 = gets.to_i
input_hash = eval(gets)

a = square.(input_number_1); b = plus_one.(input_number_2);c = into_2.(input_number_1); 
d = adder.(input_number_1, input_number_2);e = values_only.(input_hash)

p a; p b; p c; p d; p e