zaujímavá téma, škoda že som ju našiel až teraz. Neviem ako sa mohlo stať že mi unikla

Ak to je ešte aktuálne, tak skúsim opripomienkovať. Vyzerá to na python? V tom nerobím, tak neviem ako má riešené niektoré veci ohľadom pamäte, ale lepšie je vyhnúť sa globálnym premenným. Hlavne ak ide o tú optimalizáciu. Tiež by som upravil názvy tých premenných. old_g a new_g mi nič nehovoria (až po čase mi napadlo že to je asi old_guess?). Chcelo by to niečo viacvravné. Pri tej počiatočnej inicializácii new_g nastaviť na range/2. Je to viac hovoriace ako odvolávať sa na premennú ktorá ukazuje na ďalšiu premennú. To sú ale len také drobnosti. K algoritmu:
netuším prečo je parameter tej funkcie nejaký reťazec. Answer ako parameter je nejednoznačné. AK niekto chce použiť túto funkciu, musí ju celú prečítať aby vedel aké hodnoty môže nadobúdať. A tiež neviem ako tam chceš vyriešiť ak na prvýkrát uhádne, keď máš len možnosti viac a menej.
new_g a old_g ma tiež metie. Netreba mi pamätať nejaké staré a nové tipy, treba mi pamätať maximálne minimum a minimálne maximum aby som interval zužoval. V tej vetve "more" by bolo min += new_g a v tej vetve "less" by bolo max -= new_g. Tým si interval zužujem. Nový tip (tá tvoja premenná help, čo tiež netuším prečo sa volá help keď je to nový tip) by bola min + diff(min, max)
funkcia diff bude bez toho delenia, teda iba return abs(num1 - num2)