Найти - Пользователи
Полная версия: Помогите с задачей. Угадайка чисел от 1 до 1000
Начало » Python для новичков » Помогите с задачей. Угадайка чисел от 1 до 1000
1 2 3
Rodegast
> это костыль - количество шагов у тебя может быть больше 10

В некоторых случаях может и привысить 10, но сходимость будет для любого числа из указанного диапазона.
vic57
py.user.next
От медианы можно взять любое из соседних целых чисел (они равноудалены от неё).
это стандартный алгоритм для АЦП последовательног приближения - на шкале в 2**N за N шагов получить значение с точностью 1 МЗР. я уж не помню всю теорию но там в основе ряд N,N/2,N/4…
 >>> def f(n):
	out = []
	while n:
		out.append(n)
		n >>= 1
	return out
>>> N = f(2**10)
>>> N
[1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1]
>>> N[0] - sum(N[1:])
1 #ряд сходится равномерно, ошибка 1 МЗР
>>> N = f(1000)
>>> N
[1000, 500, 250, 125, 62, 31, 15, 7, 3, 1]
>>> N[0] - sum(N[1:])
6 #ряд не сходится равномерно, ошибка 6 МЗР
>>> N = f(2**10 -1)
>>> N
[1023, 511, 255, 127, 63, 31, 15, 7, 3, 1]
>>> N[0] - sum(N[1:])
10 #ошибка 10 МЗР
>>> 
vic57
py.user.next
Так в питоне-то дробные числа есть, это в АЦП всё на целых числах.
в машине есть байты и биты, питон - это абстракция
py.user.next
vic57
на шкале в 2**N за N шагов получить значение с точностью 1 МЗР
Так в питоне-то дробные числа есть, это в АЦП всё на целых числах.
wiki. бинарный поиск
wiki. binary search (полнее инфа)
py.user.next
vic57
в машине есть байты и биты
Это целые числа.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB