§ 1 – Перестановки и тому подобное.
Вот как сейчас выглядит код для нахождения всех перестановок строки “a” длиной “n” (n меньше или равно длине a) без повторений.
import itertools
for i in itertools.permutations(a,n):
print (''.join(i))
Рабочий код (с вводом конкретной строки может выглядеть так:
import itertools # подключение модуля
a=input() # запрос строки
for i in itertools.permutations(a,len(a)): # использование класса получения перестановок
print (''.join(i)) # вывод результата
То же самое – но с повторениями:
import itertools
for i in itertools.product(a,repeat=n):
print (''.join(i))
import itertools
a=input()
for i in itertools.product(a,repeat=len(a)):
print (''.join(i))
Пояснение, что делает ''.join(i). Дело в том, что строка кода for i in itertools.permutations(a,n): выводит результат в виде списка. Для слияния элементов списка используется метод join() следующим образом:
<разделитель места соединения>.join(<список>)
Например:
for i in itertools.permutations(“abc”,3):
print (i)
выведет
('a', 'b', 'c')
('a', 'c', 'b')
('b', 'a', 'c')
('b', 'c', 'a')
('c', 'a', 'b')
('c', 'b', 'a')
а
for i in itertools.permutations(a,n):
print (''.join(i))
выведет
abc
acb
bac
bca
cab
cba