Ctrl K

Склеить карточки контактов

Средняя
В адресной книге накопились дубли. Дан список карточек cards: в каждой первым идёт имя человека, а дальше — его адреса электронной почты. Две карточки принадлежат одному человеку, если у них есть хотя бы один общий адрес. Связь транзитивна: если карточка A пересекается с B, а B — с C, то все три относятся к одному человеку. Одинаковое имя само по себе ничего не значит — тёзки бывают разными людьми. Зато у всех карточек одного человека имя гарантированно одинаковое. Склейте карточки и верните по одной на каждого человека: сначала имя, затем все его адреса без повторов в лексикографическом порядке. Порядок самих карточек в ответе любой.
Пример 1
cards=[['Anna', '[email protected]', '[email protected]'], ['Boris', '[email protected]'], ['Anna', '[email protected]', '[email protected]'], ['Anna', '[email protected]']] → [['Anna', '[email protected]', '[email protected]', '[email protected]'], ['Boris', '[email protected]'], ['Anna', '[email protected]']]

Первая и третья карточки Анны делят адрес [email protected] — это один человек, его адреса сливаются и сортируются. Четвёртая Анна не делит ни одного адреса, поэтому остаётся отдельным человеком, хоть имя и то же.

Пример 2
cards=[['Lee', '[email protected]', '[email protected]'], ['Lee', '[email protected]', '[email protected]'], ['Lee', '[email protected]', '[email protected]']] → [['Lee', '[email protected]', '[email protected]', '[email protected]', '[email protected]']]

Первая и вторая карточки напрямую не пересекаются, но третья связывает их через [email protected] и [email protected] — в итоге все три склеиваются в одну.

Пример 3
cards=[['Mia', '[email protected]', '[email protected]']] → [['Mia', '[email protected]']]

Повторяющийся адрес в ответе остаётся один раз.

Ограничения
  • 1 ≤ len(cards) ≤ 1000
  • 2 ≤ len(cards[i]) ≤ 10
  • 1 ≤ длина каждой строки ≤ 30
  • cards[i][0] состоит из латинских букв
  • Остальные строки — корректные адреса почты
  • Карточки с общим адресом имеют одно и то же имя
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПерестановки по связям СредняяЦепочки синонимов СредняяСемейства слов на один обмен СложнаяЦепочки отношений СредняяПоле, разрезанное чертами Средняя
загружаем Python…
Вход
cards=[['Anna', '[email protected]', '[email protected]'], ['Boris', '[email protected]'], ['Anna', '[email protected]', '[email protected]'], ['Anna', '[email protected]']]
Ожидается
[['Anna', '[email protected]', '[email protected]', '[email protected]'], ['Boris', '[email protected]'], ['Anna', '[email protected]']]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 58 тестов на сервере, включая скрытые.