Все задачи №1
№1

Номера пунктов D и E

На рисунке схема дорог N-ского района. В таблице звёздочкой отмечено, что между пунктами есть дорога; если клетка пустая — дороги нет. Таблицу и схему рисовали независимо, поэтому нумерация пунктов в таблице никак не связана с буквами на графе. Каждому пункту на схеме соответствует номер в таблице, но какой именно — неизвестно. Определите, какие номера в таблице могут соответствовать пунктам D и E на схеме. В ответе запишите эти два номера в порядке возрастания, без пробелов и знаков препинания.

ABCDEFG
П1П2П3П4П5П6П7
П1***
П2***
П3**
П4******
П5***
П6**
П7***

Источник: ФИПИ (резервный день 19.06.2025), № 23360

Ответвпиши то, что вывела программа
Показать разбор
  1. Выпиши все дороги со схемы парами букв в roads, их тут 11.
  2. Звёздочки каждой строки таблицы запиши в conns: для каждого пункта строка с номерами его соседей.
  3. Переставь буквы по номерам через permutations и оставь расстановки, где все дороги есть в таблице.
  4. В каждой подходящей расстановке найди номера D и E, это p.index(буква) + 1.
  5. Запиши два номера по возрастанию. Расстановок может быть несколько, поэтому собирай пары в множество: пара должна быть одна.
from itertools import permutations

roads = 'AF AG BC BG CD CG DE DG EF EG FG'.split()
conns = ['345', '467', '14', '123567', '147', '24', '245']

ans = set()
for p in permutations('ABCDEFG'):
    if all(str(p.index(x) + 1) in conns[p.index(y)] for x, y in roads):
        d, e = p.index('D') + 1, p.index('E') + 1
        ans.add(str(min(d, e)) + str(max(d, e)))
print(*ans)