Задача на стеклянные шары и здания.
Цель: определить "критический этаж", падая с которого, шар разбивается.
Что дано: Переменная BUILDING, представляющая собой
dict() с двумя ключами
keys:
- первый ключ :
'nb_floors' это количество этажей в здании, значение это натуральное число не равное нулю, этажи пронумерованы от 0 до BUILDING['nb_floors']-1.
- второй ключ :
'boom' это этаж, падая с коротого шар разбивается. Значением является предикат, который отправляет
True, если шар разбивается и
False, если нет.
Моя версия предиката:
Код:
def check(i):
if i >= 'критический этаж':
return True
else:
return False
Предположим, что количество этажей в здании 9, а шар начинает разбиваться с 5 этажа.
Моя версия значения BUILDING в таком случае :
Код:
BUILDING = { 'nb_floors' : list(range(1, 9)),
'boom' : check }
Полноценный код для определения критического этажа:
def algo():
grand_pas = int(sqrt(BUILDING['nb_floors']))
assert BUILDING['nb_floors'] == grand_pas ** 2
i=0
while i < BUILDING['nb_floors'] and not BUILDING['boom'](i):
i = i + grand_pas
if i == 0:
return i
else:
j = i - grand_pas + 1
while j < i and not BUILDING['boom'](j):
j = j + 1
return j
Вопрос 1. Используя значение 'nb_floors' определите лучший случай. В этом случает сколько падений шара(обращений к BUILDING['boom']) было совершено.
Вот на этом вопросе я перестаю понимать что от меня хотят. Поиск выдал только эту статью по сортировке.
http://py-algorithm.blogspot.fr/2011/11/quicksort.htmlВопрос 2. То же самое только для худшего случая.
Найден был этот вопрос, но чтиво ситуацию не прояснило.
http://stackoverflow.com/questions/4857919/why-is-does-dict-have-worst-case-on-for-so-many-operationsЧто есть "лучший и худший" случаи? Как реализовать функцию в моей задаче? Объясните мне на пальцах,если это возможно.
И огромное спасибо за то, что все это прочитали!