HackerRank Ruby Array – Selection problem solution YASH PAL, 31 July 2024 In this HackerRank Ruby Array – Selection problem solution The array class also allows to selection and return a subset of an array based on some criteria defined in a block (a block is a group of code within {} that accepts a variable and returns a value).Selecting elements that satisfy a given criteriaRejecting elements that satisfy a given criteria > arr = [3, 4, 2, 1, 2, 3, 4, 5, 6] > arr.select {|a| a > 2} => [3, 4, 3, 4, 5, 6] > arr.reject {|a| a > 2} => [2, 1, 2] > arr => [3, 4, 2, 1, 2, 3, 4, 5, 6] > arr.drop_while {|a| a > 1} # removes elements till the block returns false for the first time => [1, 2, 3, 4, 5, 6]As you can see, the original array remains unchanged. This is called Non-Destructive Selection.For destructive behavior (change to the original array), Ruby provides the following methods: > arr = [3, 4, 2, 1, 2, 3, 4, 5, 6] > arr.delete_if {|a| a < 2} => [3, 4, 2, 2, 3, 4, 5, 6] > arr.keep_if {|a| a < 4} => [3, 2, 2, 3]NoteAn element in a block is selected, rejected, deleted, or kept based on the True or False value generated by that block on that element.For a destructive behavior for select and reject or any method that one wants to enforce a change in the original array, a ! can be used at the end of the method i.e., select! and reject!In this challenge, you have to complete the functions using syntax as explained above.Problem solution.def select_arr(arr) # select and return all odd numbers from the Array variable `arr` arr.select do |n| n.odd? end end def reject_arr(arr) # reject all elements which are divisible by 3 arr.reject do |n| n % 3 == 0 end end def delete_arr(arr) arr.delete_if do |n| n < 0 end # delete all negative elements end def keep_arr(arr) arr.keep_if { |n| n >= 0 } # keep all non negative elements ( >= 0) end coding problems solutions Ruby Solutions