Расстановка спортсменов на старте — сложная задача. Однако при помощи итераторов она решается за пару строк. Напишите программу, которая выводит список возможных расстановок спортсменов на старте.
Формат ввода
В первой строке задано натуральное число N — количество спортсменов. В следующих N строках записаны имена спортсменов.
Формат вывода
Отсортированный по алфавиту список расстановок.
Имена в каждой строке выводить через запятую и пробел.
Пример
Ввод
3
Аня
Боря
Вова
Вывод
Аня, Боря, Вова
Аня, Вова, Боря
Боря, Аня, Вова
Боря, Вова, Аня
Вова, Аня, Боря
Вова, Боря, Аня
Ввод
4
Вова
Аня
Дима
Боря
Вывод
Аня, Боря, Вова, Дима
Аня, Боря, Дима, Вова
Аня, Вова, Боря, Дима
Аня, Вова, Дима, Боря
Аня, Дима, Боря, Вова
Аня, Дима, Вова, Боря
Боря, Аня, Вова, Дима
Боря, Аня, Дима, Вова
Боря, Вова, Аня, Дима
Боря, Вова, Дима, Аня
Боря, Дима, Аня, Вова
Боря, Дима, Вова, Аня
Вова, Аня, Боря, Дима
Вова, Аня, Дима, Боря
Вова, Боря, Аня, Дима
Вова, Боря, Дима, Аня
Вова, Дима, Аня, Боря
Вова, Дима, Боря, Аня
Дима, Аня, Боря, Вова
Дима, Аня, Вова, Боря
Дима, Боря, Аня, Вова
Дима, Боря, Вова, Аня
Дима, Вова, Аня, Боря
Дима, Вова, Боря, Аня
Решение
Для решения этой задачи прекрасно подойдет функция permutations(). Функция принимает в качестве параметров список и количество элементов для создания перестановок.
Посмотреть код
Решение
Python
from itertools import permutations
names = []
for _ in range(num := int(input())):
names.append(input())
names.sort()
for name_list in permutations(names, num):
print(', '.join(name_list))
Решение
Python
# Факультативное решение, допускающее ввод участников строками через пробел.
from itertools import permutations
names = []
for _ in range(num := int(input())):
names.extend(input().split())
names.sort()
for name_list in permutations(names, num):
print(', '.join(name_list))
Доброго времени суток, стало любопытно зачем применять extend в первом цикле for, если там достаточно метода append, ведь на вход подаются по 1 имени с каждой итерацией или есть какая-то выгода в производительности?
Вы абсолютно правы. Extend здесь ровно потому, что я люблю более универсальные решения. Решение с append будет более правильно c точки зрения постановки задачи.