Исправьте ошибку в алгоритме
Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0). Нам известно, где закопан клад, но этого мало: остров полон опасностей, и нужно перемещаться строго по указаниям карты, которая, к счастью, тоже имеется в нашем распоряжении. Мы хотим найти клад как можно скорее.
Сначала вводятся два числа: координаты клада по оси икс (запад-восток) и игрек (юг-север). Затем следует некоторое количество указаний карты. Каждое указание карты состоит из двух строк. Первая строка содержит слово «север», «юг», «запад» или «восток», вторая — натуральное число, количество шагов, которое нужно пройти в данном направлении. Заключительное указание карты состоит только из одной строки, содержащей слово «стоп».
Программа выводит минимальное количество указаний карты, которое нужно выполнить, чтобы прийти к кладу. Гарантируется, что карта приводит к кладу.
x = 0
y = 0
n = 0
fl = True
c_x = int(input())
c_y = int(input())
stor = input()
cnt = int(input())
while stor != 'стоп':
if c_x == x and c_y == y:
fl = False
if stor == 'север':
y += cnt
if fl:
n += 1
elif stor == 'запад':
x -= cnt
if fl:
n += 1
elif stor == 'юг':
y -= cnt
if fl:
n += 1
elif stor == 'восток':
x += cnt
if fl:
n += 1
stor = input()
if stor != 'стоп':
kol = int(input())
print(n)
Ответы (1 шт):
в вашем цикле выход происходит только когда будет получено слово "стоп", поэтому и получаете ответ 3 - столько команд до стоп введено было
вы должны считать шаги и при каждом направлении проверять совпадают ли текущие координаты с координатами клада - если совпадают - выходить из цикла
так же нет проверки, что делать, если клад так и не был достигнут - будет выведено 0, но это означает, что клад уже находился в координатах (0,0), т.е. нужна проверка и вывод к примеру -1 (Хотя условия задачи этого вроде не требуют)
удобнее кстати не плодить несколько вводов одних и тех же данных, когда можно обойтись одним:
вместо
stor = input()
cnt = int(input())
while stor != 'стоп':
stor = input()
if stor != 'стоп':
kol = int(input())
лучше сделать
while True:
stor = input()
if stor == 'стоп':
break
kol = int(input())
