Hackerrank Ruby Enumerables: 'any', 'all', 'none', and 'find' Solution
3 min read

Hackerrank Ruby Enumerables: 'any', 'all', 'none', and 'find' Solution

Hackerrank Ruby Enumerables: 'any', 'all', 'none', and 'find' Solution

Ruby offers various enumerables on collections that check for validity of the objects within it.

Consider the following example:> arr = [1, 2, 3, 4, 5, 6]=> [1, 2, 3, 4, 5, 6]> h = {"a" => 1, "b" => 2, "c" => 3}=> {"a" => 1, "b" => 2, "c" => 3}

The any? method returns true if the block ever returns a value other than false or nil for any element passed to it:> arr.any? {|a| a % 2 == 0} # checks if any number in the array is even=> True> h.any? {|key, value| value.is_a? String} # checks if any value of the Hash object is of the type String=> False

The all? method returns true if the block never returns false or nil for any element passed to it:> arr.all? {|a| a.is_a? Integer} # checks if all elements of the array are of the type Integer=> True> h.all? {|key, value| key.is_a? String} # checks if all keys of the Hash object are of the type String=> True

The none? method returns true if the block never returns true for any element passed to it:> arr.none? {|a| a.nil?} # Checks if none of the elements in the array are of nil type=> True> h.none? {|key, value| value < 3} # checks if all values of the Hash object are less than 3=> False

The find method returns the first element for which block is not false:> arr.find {|a| a > 5} # returns the first element greater than 5 and `nil` if none satisfies the condition=> 6> h.find {|key, value| key == "b"} # returns an Array of the first match [key, value] that satisfies the condition and nil otherwise=> ["b", 2]


Task
Based on what you've learned above, complete the functions declared in your editor below.

Solution in ruby

Approach 1.

def func_any(hash)
    # Check and return true if any key object within the hash is of the type Integer
    # If not found, return false.
    hash.any? {|key,value| key.is_a? Fixnum}
end

def func_all(hash)
    # Check and return true if all the values within the hash are Integers and are < 10
    # If not all values satisfy this, return false.
    hash.all? {|key,value| value.is_a? Fixnum and value<10}
end

def func_none(hash)
    # Check and return true if none of the values within the hash are nil
    # If any value contains nil, return false.
    hash.none? {|key,value| value.nil? }
end

def func_find(hash)
   # hash.find?{|key,value|key.is_a? Fixnum and value.is_a? Fixnum and value < 20}
    hash.find {|key, value| (key.is_a? Integer and value.is_a? Integer and value < 20) or (key.is_a? String and value.is_a? String and value.start_with? 'a') }
end

Approach 2.

def func_any(hash)
    # Check and return true if any key object within the hash is of the type Integer
    # If not found, return false.
    hash.any? {|key, value| key.is_a? Integer}
end

def func_all(hash)
    # Check and return true if all the values within the hash are Integers and are < 10
    # If not all values satisfy this, return false.
    hash.all? {|key, value| value < 10}
end

def func_none(hash)
    # Check and return true if none of the values within the hash are nil
    # If any value contains nil, return false.
    hash.none? {|key, value| value.nil?}
end

def func_find(hash)
    # Check and return the first object that satisfies either of the following properties:
    #   1. There is a [key, value] pair where the key and value are both Integers and the value is < 20 
    #   2. There is a [key, value] pair where the key and value are both Strings and the value starts with `a`.
    hash.find {|key, value| (key.is_a? Integer and value.is_a? Integer and value < 20) || (key.is_a? String and value.is_a? String and value.start_with? 'a')}
end

Approach 3.

def func_any(hash)
    # Check and return true if any key object within the hash is of the type Integer
    # If not found, return false.
    hash.any? {|key, value| key.is_a? Integer}
end

def func_all(hash)
    # Check and return true if all the values within the hash are Integers and are < 10
    # If not all values satisfy this, return false.
    hash.all? {|key, value| value.is_a?Integer and value < 10}
end

def func_none(hash)
    # Check and return true if none of the values within the hash are nil
    # If any value contains nil, return false.
    hash.none? {|key, value| value.nil?}
end

def func_find(hash)
    # Check and return the first object that satisfies either of the following properties:
    #   1. There is a [key, value] pair where the key and value are both Integers and the value is < 20 
    #   2. There is a [key, value] pair where the key and value are both Strings and the value starts with `a`.
    hash.find {| k , v | ((k.is_a? Integer and v.is_a? Integer) and v < 20) or ((k.is_a? String and v.is_a? String) and v.match(/^a/)) }
end

Enjoying these posts? Subscribe for more


Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

That's okay. But without advertising-income, we can't keep making this site awesome.

We don't have any banner, Flash, animation, obnoxious sound, or popup ad. We do not implement these annoying types of ads!

We need money to operate the site, and almost all of it comes from our online advertising.

Please add thepoorcoder.com to your ad blocking whitelist or disable your adblocking software.

×