# Есть точки на плоскости - points
# Есть пара ломаных линий-графов (маршрутов),
# проходящих по заданным точкам
# Пользователь вводит две точки
# Программа определяет какие графы содержать обе точки,
# выводит все точки от первой точки до второй включительно.
# При этом проход по графу может быть в обе стороны:
# как спереди назад, так и с конца к началу.
# Если обе точки содержатся в обоих графах,
# то указать на наиболее короткий путь
# На будущее. Все графы могут быть включены в словарь из списков
def check_graph(graph): #обработка каждого графа-маршрута
flag = 'No' # Граф не содержит обе точки
qty = 0 # Количество точек между заданными пользователем точками
if first_p in graph:
if second_p in graph:
flag = 'Yes' # Граф содержит обе точки
f = 0 # Где находится первая
while first_p != graph[f]: # определяем
f += 1
s = 0 # Где находится вторая точка
while second_p != graph[s]:
s += 1
if f < s: # Если первая точка встречается раньше, чем вторая:
qty = s - f # количество точек от первой до второй
while f <= s: # вывод точек
print(points[graph[f]],end=' ')
f += 1
else: # Если вторая точка встречается раньше, чем первая
qty = f - s
while s <= f:
print(points[graph[f]],end=' ')
f -= 1
return flag,qty # Содержит ли граф обе точки
# и кол-во от первой до второй
# точки
points = {'a':[10,20], 'b':[30,15], 'c':[60,10], 'd':[80,25], 'e':[50,40]}
print('Existing points: ',end='')
for i in points:
print(i,end=', ')
print()
# графы маршруты
graph1 = ['a','d','e','c']
graph2 = ['e','a','b','c','d']
print()
# ввод пользователя
first_p = input('First point: ')
second_p = input('Second point: ')
print()
# точки должны быть различны
if first_p == second_p:
print('You typed the same!')
print('First path: ',end='')
flag1,qty1 = check_graph(graph1)
print()
print('Second path: ',end='')
flag2,qty2 = check_graph(graph2)
print()
# если оба графа содержат обе точки,
# определяем, какой путь короче
if flag1=='Yes' and flag2=='Yes':
if qty1 < qty2:
print('The first path is shorter')
elif qty2 < qty1:
print('The second path is shorter')
Подписаться
авторизуйтесь
0 Комментарий