answer='' number=int(500) print(number) while answer!='=': answer=input() if answer=='=': print (int(number)) elif answer=='>': number*=1.5 print (int(number)) elif answer=='<': number*=0.5 if number>1000: number=1000 print (int(number))
answer='' number=int(500) print(number) while answer!='=': answer=input() if answer=='=': print (int(number)) elif answer=='>': number*=1.5 print (int(number)) elif answer=='<': number*=0.5 if number>1000: number=1000 print (int(number))
import random n = 0 number_1 = 1 number_2 = 1000 while n < 10: n += 1 number = random.randint(number_1, number_2) print(number) answer = input('Enter result') if answer == '>': number_1 = number + 1 elif answer == '<': number_2 = number - 1 else: print('WIN!') break else: print('Game Over')
summ = 0 delta = 2**9 while True: print('sum:',summ) inp = input('?: ') if inp == '=': print('result:',summ) break elif inp == '<': summ += delta delta >>= 1 elif inp == '>': summ -= delta delta >>= 1 else: print('input error')
S = 250 Median = 500 while True: print(Median) if input() == ">": Median += S else: Median -= S if S > 1: S //= 2
Rodegastне сойдется - д.б 2 в степени
S = 250
Median = 500
while True:
print(Median)
if input() == “>”:
Median += S
else:
Median -= S
S -= S // 2
Rodegastпроверяй сам, я это на ассемблере делал
А ты проверь
rodegast@rodegast:~$ python3 ./game.py 500 > 750 < 625 > 687 < 656 > 671 < 664 > 667 < 666
vic57
задачка на метод последовательных приближений
RodegastЭто обычный бинарный поиск (в основе лежит принцип дихотомии). Максимальное количество шагов равно log2(1000) ~= 9.96
Нет это задача на динамическое программирование.
Rodegast
У меня всё проверенно. Вот пример того как он находит нужное число
>>> def f(delta,val): summ = 0 while delta: if summ < val: summ += delta elif summ > val: summ -= delta else: break delta >>= 1 return summ >>> d = 1000 >>> count = 0 >>> for i in range(0,1000): if i != f(d, i): count += 1 >>> count 488 >>>