G. Игровая сетка

Ребята в классе решили устроить чемпионат по шашкам. К сожалению, количество учеников не является степенью двойки и поэтому классическую турнирную сетку создать сложно. Для выявления фаворитов ребята договорились сыграть по принципу «каждый с каждым». Продумайте программу, которая составляет список необходимых игр.

Формат ввода

В первой строке записано число учеников (N).
В каждой из последующих N строк записано одно имя.

Формат вывода

Список игр в формате:
<Игрок 1> – <Игрок 2>
Порядок игр не имеет значения.

Пример

Ввод

3
Аня
Боря
Вова

Вывод

Аня - Боря
Аня - Вова
Боря - Вова

Решение

Для решения этой задачи может возникнуть соблазн использовать уже известный на product(), дав ему в качестве аргументов два списка. Но это повлечет за собой дополнительные проверки на совпадения имен (сам с собой). и на повторение комбинаций (Вася – Дима == Дима – Вася)

Правильный путь – использование combinations(). Функция combinations() принимает на вход итерируемый объект и количество элементов, из которых должна сотстоять каждая комбинация и на основе этих данных генерирует все возможные кобинации.

Посмотреть код

Решение

Python
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))]))  
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии