What I mean is that you take the border from the length of your list. At least that is what I think I see happening here.
What I meant was having a list of possible characters like ['a','b',(..) 'z']. And then also give a ‘border’. Let’s say you give a border of 3. This will effectively give you all possible 3-character combinations of *all* given characters.
I hope I explained this good enough, thanks again!
Hello Guyon! I think I understand what you meant now. The algorithm is pretty much the same:
def allcombinations(n):
queue = [-1]
while queue:
i = queue[-1]+1
if i == 26:
queue.pop()
else:
queue[-1] = i
yield [chr(97+j) for j in queue]
if len(queue) < n:
queue.append(-1)
The total combinations is computed by:
def total(n):
return sum([26**i for i in range(1,n+1)])
Which means 12356630 entries for n=5!!! Be careful.
hey, that someone was me! thanks for the code.
I don’t see a ‘border’ though
What I mean is that you take the border from the length of your list. At least that is what I think I see happening here.
What I meant was having a list of possible characters like ['a','b',(..) 'z']. And then also give a ‘border’. Let’s say you give a border of 3. This will effectively give you all possible 3-character combinations of *all* given characters.
I hope I explained this good enough, thanks again!
Hello Guyon! I think I understand what you meant now. The algorithm is pretty much the same:
def allcombinations(n): queue = [-1] while queue: i = queue[-1]+1 if i == 26: queue.pop() else: queue[-1] = i yield [chr(97+j) for j in queue] if len(queue) < n: queue.append(-1)The total combinations is computed by:
def total(n): return sum([26**i for i in range(1,n+1)])Which means 12356630 entries for n=5!!! Be careful.
This list is the sum of three cartesian products,
here it is cheating a bit and not in exactly the same order.
import probstat # probstat.sf.net def total(mylist): for (n) in range(len(mylist)): for (item) in probstat.Cartesian([mylist]*(n+1)): yield itemfor the list [1,2,3] it does the cartesian product of [1,2,3]
then [1,2,3] x [1,2,3] then [1,2,3] x [1,2,3] x [1,2,3]