Тип 1 № 58468
На рисунке схема дорог изображена в виде графа, в таблице звёздочками обозначено наличие дороги между населёнными пунктами. Так как таблицу и схему рисовали независимо друг от друга, нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Выпишите последовательно без пробелов и знаков препинания указанные на графе буквенные обозначения пунктов от П1 до П8: сначала букву, соответствующую П1, затем букву, соответствующую П2, и т. д.
<aside> 💡 Комментарии к коду решения:
from itertools import permutations
- Импортируем функцию permutations
из модуля itertools
для генерации перестановок получаемого алфавита.table = '14 17 18 23 25 26 32 34 38 41 43 47 48 52 56 58 62 65 71 74 81 83 84 85'
- По таблице из условия составляем строку всех возможных дорог (туда и обратно).graph = 'АБ БА АИ ИА ИБ БИ ИЖ ЖИ БЖ ЖБ БВ ВБ ВЖ ЖВ ВГ ГВ ЖЕ ЕЖ ЕГ ГЕ ДГ ГД ЕД ДЕ'
- Аналогично делаем для графа с буквенными вершинами. ****for per in permutations('АБВГДЖИЕ'):
- Через permutations
получаем все возможные перестановки символов 'АБВГДЖИЕ'
.new_table = table
- Инициализируем переменную new_table
с текущим значением table
.for i in range(1, 8+1):
- Будем пробегать все числовые вершины из таблицы.new_table = new_table.replace(str(i), per[i-1])
- И заменяем числа в строке new_table
на символы из текущей перестановки per
.if set(new_table.split()) == set(graph.split()):
- Проверяем, получившиеся наборы дорог совпадают через множества элементов строк new_table
и graph
.print('1 2 3 4 5 6 7 8')
- Вывод числовой набор вершин.print(*per)
- И выводим текущеую перестановку, которая соответствует графу.
</aside>from itertools import permutations
table = '14 17 18 23 25 26 32 34 38 41 43 47 48 52 56 58 62 65 71 74 81 83 84 85'
graph = 'АБ БА АИ ИА ИБ БИ ИЖ ЖИ БЖ ЖБ БВ ВБ ВЖ ЖВ ВГ ГВ ЖЕ ЕЖ ЕГ ГЕ ДГ ГД ЕД ДЕ'
for per in permutations('АБВГДЖИЕ'):
new_table = table
for i in range(1, 8+1):
new_table = new_table.replace(str(i), per[i-1])
if set(new_table.split()) == set(graph.split()):
print('1 2 3 4 5 6 7 8')
print(*per)