№1 · решено
Номера пунктов D и E
На рисунке схема дорог N-ского района. В таблице звёздочкой отмечено, что между пунктами есть дорога; если клетка пустая — дороги нет. Таблицу и схему рисовали независимо, поэтому нумерация пунктов в таблице никак не связана с буквами на графе. Каждому пункту на схеме соответствует номер в таблице, но какой именно — неизвестно. Определите, какие номера в таблице могут соответствовать пунктам D и E на схеме. В ответе запишите эти два номера в порядке возрастания, без пробелов и знаков препинания.
| П1 | П2 | П3 | П4 | П5 | П6 | П7 | |
|---|---|---|---|---|---|---|---|
| П1 | * | * | * | ||||
| П2 | * | * | * | ||||
| П3 | * | * | |||||
| П4 | * | * | * | * | * | * | |
| П5 | * | * | * | ||||
| П6 | * | * | |||||
| П7 | * | * | * |
Источник: ФИПИ (резервный день 19.06.2025), № 23360
Ответвпиши то, что вывела программа
Показать разбор
- Выпиши все дороги со схемы парами букв в roads, их тут 11.
- Звёздочки каждой строки таблицы запиши в conns: для каждого пункта строка с номерами его соседей.
- Переставь буквы по номерам через permutations и оставь расстановки, где все дороги есть в таблице.
- В каждой подходящей расстановке найди номера D и E, это p.index(буква) + 1.
- Запиши два номера по возрастанию. Расстановок может быть несколько, поэтому собирай пары в множество: пара должна быть одна.
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)