Почему выводятся все варианты, а не только нужные?
Задача заключается в том, что нужно вывести варианты символов в строке. Если в данной строке есть пробелы их нужно убрать Мой код:
import itertools
s = input()
new_s = ''
for x in s:
if x != ' ':
new_s += x
for j in range(len(new_s)):
for i in itertools.permutations(new_s,j+1):
print(''.join(i))
Но есть проблема в одном тесте
Если я ввожу aaa, то должно выводиться:
a
aa
aaa
А у меня выводит все варианты, то есть a a a aa aa и так далее.
Что нужно изменить в скрипте, чтобы он заработал корректно?
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
во первых можно не сразу выводить, а накапливать результаты, например в множестве:
res=set()
for x in s:
if x != ' ':
new_s += x
for j in range(len(new_s)):
for i in itertools.permutations(new_s,j+1):
res.add(''.join(i))
print(*res)
P.S.
кстати от пробелов можно было и через replace избавиться
s = s.replace(' ', '')
P.P.S.
весь код можно записать так:
new_s = s.replace(' ', '')
for j in range(len(new_s)):
print(*sorted(set(map(''.join, itertools.permutations(new_s, j + 1)))))
я добавил еще сортировку результата чтоб в лексическом порядке выводилось