Простой вариант программы с двумя заданными графами на Python

# Есть точки на плоскости - 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')

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Python для начинающих
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x