In this HackerRank Ruby Control Structures - Case (Bonus Question) problem solution, HackerRank is written in RoR and we have various classes defined in it. Some of them are

  1. Hacker
  2. Submission
  3. TestCase
  4. Contest

etc.

You have been given a function where an object which may or may not be of the above-mentioned type is sent as an argument. You have to use the case-control structure in Ruby to identify the class to which the object belongs and print the following output:

  1. if Hacker, output "It's a Hacker!"
  2. if Submission, output "It's a Submission!"
  3. if TestCase, output "It's a TestCase!"
  4. if Contest, output "It's a Contest!"
  5. for any other object, output "It's an unknown model"

Note

  1. use case (switch statement of Ruby)
  2. use puts for printing

HackerRank Ruby Control Structures - Case (Bonus Question) problem solution


Problem solution.

def identify_class(obj)
    case obj
    when Hacker
        puts "It's a Hacker!"
    when Submission
        puts "It's a Submission!"
    when TestCase
        puts "It's a TestCase!"
    when Contest
        puts "It's a Contest!"
    else
        puts "It's an unknown model"
    end
end


Second solution.

def identify_class(obj)
    # write your case control structure here
    case
    when obj.instance_of?(Hacker)
        puts "It's a Hacker!"
    when obj.instance_of?(Submission)
        puts "It's a Submission!"
    when obj.instance_of?(TestCase)
        puts "It's a TestCase!"
    when obj.instance_of?(Contest)
        puts "It's a Contest!"
    else
        puts "It's an unknown model"
    end
end