Решение серии задач

Вызов главного прыгуна

Найдите минимальные единицы энергии, с которыми бот должен стартовать, чтобы успешно пройти игру.

Проблема

Бот Чифа играет в старую игру для 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
}