Почему выводятся все варианты, а не только нужные?

Рейтинг: -2Ответов: 1Опубликовано: 16.04.2023

Задача заключается в том, что нужно вывести варианты символов в строке. Если в данной строке есть пробелы их нужно убрать Мой код:

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 и так далее. Что нужно изменить в скрипте, чтобы он заработал корректно?

Ответы

▲ 2Принят

во первых можно не сразу выводить, а накапливать результаты, например в множестве:

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)))))

я добавил еще сортировку результата чтоб в лексическом порядке выводилось