class HaveWant
attr_reader :answers
def initialize(have, *args, want)
@have = have
@args = args
@want = want
find_matches
end
private
def find_matches
@answers = @have.methods.map do |method|
@have.dup.method(method)
end.select do |method|
begin
method.call(*@args).eql? @want
rescue
false
end
end.map(&:name)
end
end
havewant = HaveWant.new("hello", "HELLO")
puts havewant.answers
havewant = HaveWant.new([3,3,3,4,5], 2..3, [3,4])
puts havewant.answers
Y2xhc3MgSGF2ZVdhbnQKICAKICBhdHRyX3JlYWRlciA6YW5zd2VycwogIAogIGRlZiBpbml0aWFsaXplKGhhdmUsICphcmdzLCB3YW50KQogICAgQGhhdmUgPSBoYXZlCiAgICBAYXJncyA9IGFyZ3MKICAgIEB3YW50ID0gd2FudAogICAgCiAgICBmaW5kX21hdGNoZXMKICBlbmQKCiAgcHJpdmF0ZQogIAogIGRlZiBmaW5kX21hdGNoZXMKICAgIAogICAgQGFuc3dlcnMgPSBAaGF2ZS5tZXRob2RzLm1hcCBkbyB8bWV0aG9kfAogICAgICBAaGF2ZS5kdXAubWV0aG9kKG1ldGhvZCkKICAgIGVuZC5zZWxlY3QgZG8gfG1ldGhvZHwKICAgICAgYmVnaW4KICAgICAgICBtZXRob2QuY2FsbCgqQGFyZ3MpLmVxbD8gQHdhbnQKICAgICAgcmVzY3VlCiAgICAgICAgZmFsc2UKICAgICAgZW5kCiAgICBlbmQubWFwKCY6bmFtZSkKICAgIAogIGVuZAplbmQKCmhhdmV3YW50ID0gSGF2ZVdhbnQubmV3KCJoZWxsbyIsICJIRUxMTyIpCgpwdXRzIGhhdmV3YW50LmFuc3dlcnMKCmhhdmV3YW50ID0gSGF2ZVdhbnQubmV3KFszLDMsMyw0LDVdLCAyLi4zLCBbMyw0XSkKCnB1dHMgaGF2ZXdhbnQuYW5zd2Vycw==