Кортежи и множества · 18 из 20
Рассадить враждующих
Задействованы также: Циклы, Словари
Некоторые гости не разговаривают друг с другом. Организатор хочет рассадить всех за два стола так, чтобы ни одна враждующая пара не оказалась вместе.
Что сделать
Рассадите гостей за два стола так, чтобы враги не оказались вместе.
Что приходит
vrazhda— словарь «имя → с кем он не желает сидеть»; вражда взаимна
Что вернуть
Пару списков по алфавиту — два стола, первым тот, где первое по алфавиту имя; ни с кем не враждующие — за первым; нельзя — None.
Допишите функцию razdelit_na_dva_stola в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Галя и Петя не разговаривают, Вася ни с кем не враждует. Галя — за первый стол, Петя — за второй, Вася — за первый: (["Вася", "Галя"], ["Петя"]). Если А против Б, Б против В, а В против А, два стола их не разведут — None.
razdelit_na_dva_stola({'Галя': ['Петя'], 'Петя': ['Галя'], 'Вася': []})
(['Вася', 'Галя'], ['Петя'])
Функция принимает словарь: имя — список тех, с кем этот человек не желает сидеть. Вражда взаимна. Возвращает кортеж из двух списков имён (каждый по алфавиту) — два стола. Первым идёт стол, в котором первое по алфавиту имя. Если рассадить невозможно, возвращает None. Гости, ни с кем не враждующие, попадают за первый стол.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.