Решение серии задач
Вызов главного прыгуна
Найдите минимальные единицы энергии, с которыми бот должен стартовать, чтобы успешно пройти игру.
Проблема
Бот Чифа играет в старую игру для DOS. По каждому индексу вдоль числовой линии расположен ряд зданий разной высоты. Бот начинает со здания 0
и на высоте 0
. Вы должны определить минимальную энергию, которая нужна его боту в начале, чтобы он мог прыгать на вершину каждого здания, и при этом его энергия не опускалась ниже нуля.
Единицы высоты напрямую связаны с единицами энергии. Уровень энергии бота рассчитывается следующим образом:
- Если
botEnergy
бота меньше высоты здания, егоnew_energy = bot_energy - (height - bot_energy)
- Если
botEnergy
бота больше высоты здания, егоnew_energy = bot_energy + (bot_energy -height)
Например, высота здания указывается как h = [2, 3, 4, 3, 2]
. Если бот начинается с botEnergy = 4
, получаем следующую таблицу:
botEnergy height delta
4 2 +2
6 3 +3
9 4 +5
14 3 +11
25 2 +23
48
Это позволяет боту завершить курс, но не может быть минимальным начальным значением. Минимальный старт в этом случае равен 3
.
Подробнее на странице задания…
Анализ проблемы и решение
Решение
питон
def chiefHopper(arr):
min_energy = 0
for height in reversed(arr):
min_energy = math.ceil((min_energy + height) / 2)
return min_energy
JavaScript
function chiefHopper(arr) {
let min_energy = 0
for (let height of arr.reverse()) {
min_energy = Math.ceil((min_energy + height) / 2)
}
return min_energy
}