def combinationRange(self, pattern, lengths, ranges):
"""
Recursive function that create all possibilities
:param pattern: the pattern
:param lengths: the pattern's lengths
:param ranges:
:return: all patterns
"""
if not pattern:
return None
if lengths and ranges:
newPattern = []
# Get first range and first length
r = ranges.pop(0)
l = int(lengths.pop(0))
myRange = self.splitRange(r)
if not myRange:
return None
comb = combinations_with_replacement(myRange, l)
try:
i = 0
while i <= self.__maximum:
result = [''.join(comb.next())][0]
replace = "[" + r + "]"
for p in pattern:
newPattern.append(p.replace(replace, result, 1))
i += 1
except StopIteration:
pass
return self.combinationRange(newPattern, lengths, ranges)
else:
return pattern
评论列表
文章目录