В настоящее время я работаю над проблемой, которая требует, чтобы я спроектировал функцию, которая принимает строку «0», «1» и «X» в качестве аргумента и возвращает генератор, который выдает различные комбинации X, обращенные в «1» и «X». 0's
ie: если передать '0XX1', будет возвращен генератор, который выдаст-> 0001, 0101, 0011, 0111,
Я решил проблему итеративно, но нужно уметь чтобы решить это рекурсивно. Каков наилучший способ решения этой проблемы? В такой сложной проблеме (ну, как мне сложно!), Как мне определить базовый случай и рекурсивный случай?
Ниже приведено мое итеративное решение:
from typing import Generator
def binary_strings(string: str) -> Generator[str, None, None]:
listOfIndices = []
starterString = ''
for index, char in enumerate(string):
if char == 'X':
starterString = starterString + '0'
listOfIndices.append(index)
else:
starterString = starterString + char
def stringGenerator(): #generates the different combos
baseString = starterString
moddedString = ''
n = len(listOfIndices)
counter = 1
for i, character in enumerate(
starterString):
if i == 0:
yield starterString
else:
break
while counter <= n:
for i, chara in enumerate(baseString):
if i in listOfIndices:
moddedString = baseString[:i] + '1' + baseString[i + 1:]
yield moddedString
counter += 1
if counter > n and n >= 1:
counter = 1
n -= 1
baseString = moddedString
break
else:
continue
return stringGenerator()