Kombinacje do wymiany ciągów

Mam więc ciąg „1xxx1” i chcę zastąpić pewną liczbę (może wszystkie może brak) liczby x znakiem, powiedzmy „5”. Chcę wszystkich możliwych kombinacji (... może permutacji) ciągu, gdzie x jest albo podstawione, albo pozostawione jako x. Chciałbym, aby wyniki były przechowywane na liście.

Tak więc pożądany rezultat byłby

>>> myList = GenerateCombinations('1xxx1', '5')
>>> print myList
['1xxx1','15xx1','155x1','15551','1x5x1','1x551','1xx51']

Oczywiście chciałbym, aby był w stanie obsłużyć struny o dowolnej długości z dowolną ilością x, a także móc zastąpić dowolną liczbę. Próbowałem użyć pętli i rekurencji, żeby to bezskutecznie rozwiązać. Każda pomoc byłaby doceniana.

questionAnswers(1)

yourAnswerToTheQuestion