Навигация была важна во все времена.
Нам достался архив маршрутов движения, но их оказалось так много, что без автоматизации мы с ними не справимся вовек. Каждый маршрут представляет собой последовательность шагов в одном из четырех направлений:
- СЕВЕР;
- ВОСТОК;
- ЮГ;
- ЗАПАД.
Напишите программу, чтобы по заданному маршруту она определяла, в какой именно точке мы окажемся.
Для простоты будем считать, что в начале маршрута мы находимся в точке (0; 0).
Формат ввода
Вводятся инструкции маршрута в виде:
<направление>
<количество шагов>
Ввод завершается строкой СТОП.
Формат вывода:
Два целых числа — координаты конечной точки маршрута.
Пример
Ввод
СЕВЕР
2
ВОСТОК
2
СТОП
Вывод
2
2
Ввод
СЕВЕР
2
ЮГ
3
ЗАПАД
4
СТОП
Вывод
-1
-4
Решение
Инициализируем нулем две координаты – x и y.
Запускаем цикл while и считываем направление до тех пор, пока не получим слово ‘СТОП’.
В зависимости от значения слова и смещения, изменяем значение переменной соответствующей координаты.
СЕВЕР: y + сдвиг
ЮГ: y – сдвиг
ЗАПАД: x – сдвиг
ВОСТОК: x + сдвиг
Посмотреть код
Решение
# решение с помощью оператора if
x, y = 0, 0
while (direction := input()) != 'СТОП':
n = int(input())
if direction == 'ВОСТОК':
x += n
elif direction == 'ЗАПАД':
x -= n
elif direction == 'СЕВЕР':
y += n
elif direction == 'ЮГ':
y -= n
print(y)
print(x)
Решение
# решение с помощью оператора match/case
x = y = 0
while (dir := input()) != 'СТОП':
q = int(input())
match dir:
case 'СЕВЕР':
y += q
case 'ЮГ':
y -= q
case 'ЗАПАД':
x -= q
case 'ВОСТОК':
x += q
print(y)
print(x)
Оба решения идентичны. разница только в комментариях.
Где решение с помощью оператора “match/case”?
Не доглядел. Исправил.
Мне было бы приятнее вам отвечать, если бы вы были бы хоть капельку более вежливы и менее требовательны. Я не так, чтобы вам чем-то обязан. Спасибо за понимание.
Прошу прощения. Я не подумал что мой вопрос вы воспримете как требование
Нет проблем. Хорошо, что в этом не было умысла.
не подскажете пожалуйста
СЕВЕР
2
ЮГ
3
ЗАПАД
4
СТОП
должно вывести -4 -1
Так, но в другом порядке.
X: 0 + 2 – 3
Y: -4
-1
-4