Я работаю над быстрым и эффективным способом решения следующей проблемы, но пока что я смог ее решить, используя довольно медленный , решение для контура гнезда. В любом случае, вот описание:Python - создать новую строку определенной длины с n заменами из определенного алфавита
Итак, у меня есть строка длины L, скажем 'BBBX'
. Я хочу найти все возможные строки длины L, начиная с 'BBBX'
, которые отличаются не более чем на 2 положения и, как минимум, от 0 позиций. Кроме того, при создании новых строк новые символы должны выбираться из определенного алфавита.
Я предполагаю, что размер алфавита не имеет значения, так что скажем в этом случае алфавит ['B', 'G', 'C', 'X']
.
Так, некоторые выходной образец будет, 'BGBG'
, 'BGBC'
, 'BBGX'
и т.д. Для этого примера со строкой длиной 4 с до 2-х замен, мой алгоритм находит 67 возможных новые строки.
Я пытаюсь использовать itertools
, чтобы решить эту проблему, но мне сложно найти решение. Я пытаюсь использовать itertools.combinations(range(4), 2)
, чтобы найти все возможные позиции. Тогда я думаю об использовании product()
от itertools
, чтобы построить все возможности, но я не уверен, есть ли способ связать его как-то с индексами с вывода combinations()
.