Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Решаю задачу от яндекса(вступительную), все нормально, только не получается пройти один тест...

Условия задачи такие:
Только что вышло продолжение игры «Hogwarts Legacy». В ней, играя за главного героя, вы должны бороться с монстрами и злыми волшебниками. Во второй версии добавили новый механизм ограничения ресурсов: у игрока может быть несколько единиц энергии, которые он может тратить на заклинания и затем восполнять. Изначально у игрока
0 единиц энергии.

Любое заклинание стоит 1 единицу энергии. Ограничения сверху на число единиц энергии у игрока нет, но оно не может быть меньше нуля. Чтобы пополнять единицы энергии, надо пить сливочное пиво. Каждая кружка сливочного пива добавляет фиксированное число единиц энергии b
.

Вам дан журнал игры с действиями четырех видов:

cast – наложить заклинание. Гарантируется, что на этот момент есть хотя бы одна единица энергии

drink – выпить кружку целебного сливочного пива

save – сохранить игру

load – загрузить последнее сохранение. Если до этого не было ни одного сохранения, то игра откатывается на начальное состояние.

После каждого действия выведите, сколько единиц энергии осталось у игрока.

Пример входных данных:
8 4
drink
save
cast
cast
drink
save
cast
load

Выходные данные
4
4
3
2
6
6
5
6


и вот мой код: https://pastebin.com/TQnpax1g

По дате
По рейтингу
Аватар пользователя
Новичок
10мес

Логика программы не соответствует заданию. Например, вообще нет значения сохранённой энергии, зачем-то введены ограничения сверху на параметры, при загрузке сохранения энергия почему-то просто увеличивается на 1. Вот корректный вариант:

1234567891011121314151617
 n, b = map(int, input().split()) 
energy = 0 
saved_energy = -1 
for _ in range(n): 
  x = input() 
  if x == 'cast':  
    energy -= 1 
  elif x == 'drink':  
    energy += b 
  elif x == 'save':  
    saved_energy = energy 
  elif x == 'load': 
    if saved_energy == -1: 
      energy = 0 
    else: 
      energy = saved_energy 
  print(energy)