Задача оценивается в 00 баллов. Ограничение по времени работы в каждой задаче секунда



Pdf көрінісі
бет2/5
Дата15.09.2022
өлшемі168,22 Kb.
#39185
түріРешение
1   2   3   4   5
Байланысты:
ans-iikt-9-11-sch-msk-14-5

Задача 2. Манхэттен
Кварталы Манхэттена состоят из авеню, направленных с юга на север и улиц,
направленных с запада на восток. Все улицы и авеню пронумерованы числами, начиная с 1
подряд (первая улица, вторая улица, третья улица и т. д.). Передвигаться можно только по
улицами или по авеню.
Миша впервые попал на Манхэттен. Сейчас он стоит на пересечении авеню номер x
1
и улицы номер y
1
. Ему нужно попасть на перекресток авеню номер x
2
и улицы номер y
2
.
Определите маршрут, который он должен пройти.
Программа получает на вход 4 числа: x
1
, y
1
, x
2
, y
2
, записанных в отдельных строках.
Все числа — натуральные, не превышают 10
3
. Начальное и конечное расположение Миши не
совпадают.
Программа должна вывести последовательность из латинских заглавных букв,
описывающих маршрут, которому должен следовать Миша. Буква «N» обозначает
перемещение на один квартал на север, «S» — на юг, «W» — на запад, «E» — на восток.
Программа должна вывести самый короткий из всех возможных маршрутов, если же
кратчайших маршрутов существует несколько, то программа должна вывести любой из них
(но только один).
Программа может выводить последовательность ходов не в одну строку (как в
примере), а каждый символ ответа — в отдельной строке (например, если каждый символ
ответа выводится при помощи отдельной команды вывода внутри цикла).
Пример входных и выходных данных
Ввод
Вывод
Примечание
1
3
4
1
EEESS
Миша стоит на пересечении первой авеню и третьей улицы и
должен попасть на пересечение четвертой авеню и первой
улицы. Ему нужно пройти три квартала на восток и два
квартала на юг. Возможны и другие ответы, например,
«SSEEE», «ESESE» и прочие. Возможен вывод ответа не в
одну строку, а каждый символ ответа — в отдельной строке.
Решение
Если x
2 
> x
1
, то Миша должен переместиться на x

- x
1
квартала на восток, поэтому
программа должна вывести x
2 
- x
1
символ «E», что можно сделать при помощи цикла. Иначе
Миша должен переместиться на x
1 
- x
2
квартала на запад, поэтому программа должна
вывести x
1 
- x
2
символ «W». Аналогично рассматривается передвижение на север и на юг.
Пример решения на языке Python, использующие циклы для вывода последовательности
Страница 2 из 8
В
то
р
а
я
а
ве
ню
П
е
р
ва
я
а
ве
ню
Т
ре
ть
я
а
ве
ню
Ч
ет
ве
рт
ая
а
ве
ню
Первая улица
Вторая улица
Третья улица
N
E
S
W


перемещений:
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
if x2 > x1:
for i in range(x2 - x1):
print("E")
else:
for i in range(x1 - x2):
print("W")
if y2 > y1:
for i in range(y2 - y1):
print("N")
else:
for i in range(y1 - y2):
print("S")
Приведем еще один пример решения, в котором для повторения одного символа
используется операция умножения строки на число, то есть для того, чтобы повторить
символ «Е» x
2 
- x
1
раз нужно выполнить операцию "E"*(x2-x1). При этом если умножить
строку на отрицательное число, то получится пустая строка:
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
print("E"*(x2-x1) + "W"*(x1-x2) + "N"*(y2-y1) + "S"*(y1—y2))


Достарыңызбен бөлісу:
1   2   3   4   5




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет