Подскажите, не могу понять что я не так делаю.
Я хочу сгенерировать все косбинации путем удаления из ряда:
"123456012345601234560123456012345601234560123456012345601234560" длинной 64,
48 элементов(тут я заменяю удаления на х):
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
т.е. получить в результаие все варианты рядов длинной 22 элемента ,т.е. 22 цифры,
а получактся у меня их только соединить.
тут в примере, я использую x за место удаления(я еше не нашел как отпрааить сделать что бы удаляло,поэтрму за место ascii символа удалить, я мчпользую x ) и получаю на выходе:
xxxxxxxxxxxxxxxxxxxxxxxxxx601234x6012345601234560xx3x56012345601
т.е. получается что все x добавлябтся к началу и потом по одному х ,(перебором от 1 до 48 ), заменняют в ряде 123456012345601234560123456012345601234560123456012345601234560
и получается на выходе:
xxxxxxxxxxxxxxxxxxxxxxxxxx601234x6012345601234560xx3x56012345601
а как сделать что бы сразу все удаления(или Х как в данном конкретном случае) добавило и потом все улаления расставляло, что бы длина на выходе ВсегдА была 22 знака, и без перебора всех вподряд комбинаций а именно удалением из существубщего ряда что бы получить все возможнве варинты рядов, длинной, равной , - начальный ряд минус количество удалений в нем.
?
подскажите please.
Большое спасибо.
import itertools
def GenerateAll(source, rep):
for comb in itertools.combinations(range(len(source)), len(rep)):
s = list(source)
for (i, j) in enumerate(comb):
s[j] = rep[i];
yield "".join(s)
for x in (GenerateAll("1234560123456012345601234560123456012345601234560123456012345601", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")):print(x)