rmin = 1 rmax = 10 ** 9 while rmin < rmax do mid = (rmin + rmax) / 2 print "? ", mid, "\n" STDOUT.flush if gets.to_i == 1 rmin = mid else rmax = mid - 1 end end print "! ", rmin, "\n" STDOUT.flush