def solve(f, min, max)
middle = 0
while(min != max) do
middle = (min+max)/2
if (f(middle)>0)
max = middle
else
min = middle
end
return middle
end
p solve(lambda {|x| x**2+6*x+2 }, -1000, 1000)
ZGVmIHNvbHZlKGYsIG1pbiwgbWF4KQogICBtaWRkbGUgPSAwCiAgIHdoaWxlKG1pbiAhPSBtYXgpIGRvCiAgICAgICBtaWRkbGUgPSAobWluK21heCkvMgogICAgICAgaWYgKGYobWlkZGxlKT4wKQogICAgICAgICAgIG1heCA9IG1pZGRsZQogICAgICAgZWxzZQogICAgICAgICAgIG1pbiA9IG1pZGRsZQogICBlbmQKICAgcmV0dXJuIG1pZGRsZQplbmQKCgpwIHNvbHZlKGxhbWJkYSB7fHh8IHgqKjIrNip4KzIgfSwgLTEwMDAsIDEwMDApCg==