Ребята в классе решили устроить чемпионат по шашкам. К сожалению, количество учеников не является степенью двойки и поэтому классическую турнирную сетку создать сложно. Для выявления фаворитов ребята договорились сыграть по принципу «каждый с каждым». Продумайте программу, которая составляет список необходимых игр.
Формат ввода
В первой строке записано число учеников (N).
В каждой из последующих N строк записано одно имя.
Формат вывода
Список игр в формате:
<Игрок 1> – <Игрок 2>
Порядок игр не имеет значения.
Пример
Ввод
3
Аня
Боря
Вова
Вывод
Аня - Боря
Аня - Вова
Боря - Вова
Решение
Для решения этой задачи может возникнуть соблазн использовать уже известный на product(), дав ему в качестве аргументов два списка. Но это повлечет за собой дополнительные проверки на совпадения имен (сам с собой). и на повторение комбинаций (Вася – Дима == Дима – Вася)
Правильный путь – использование combinations(). Функция combinations() принимает на вход итерируемый объект и количество элементов, из которых должна сотстоять каждая комбинация и на основе этих данных генерирует все возможные кобинации.
Посмотреть код
Решение
from itertools import combinations
names = [input() for _ in range(int(input()))]
print('\n'.join([f'{name1} - {name2}' for name1, name2 in list(combinations(names, 2))]))