l = 10 r = 1000000000 c = 0 loop{ y = (l + r) / 2 puts "? #{[y - c,0].max}" STDOUT.flush ans = gets.to_i if ans == 0 puts "! #{y}" STDOUT.flush break elsif ans > 0 l = y else r = y end c += 1 }