# Cycle cycle

• The language is not important, I'll explain the example of the Pyton language:

``````myarray=['a', 'b', 'c']
number=3
def myfunc(myarray, number): #при number = 3
newarray=[]
for s1 in myarray
for s2 in myarray
for s3 in myarray
newarray.append(s1+s2+s3)
return newarray
``````

must return: aaaa, aab, aac, aba, abb, abc, et al. if `number = 4`, all four-digits that can be calculated, if 5, then five-digit, etc.

How do you do that?

• ``````from itertools import product

chars = 'abc'

print(list(product(chars, repeat=3)))

# [('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c'), ...
``````

Turn the output data into what you need.

Here's the pseudo code of implementation. `product()` https://docs.python.org/3/library/itertools.html#itertools.product :

``````def product(*args, repeat=1):
# product('ABCD', 'xy') --&gt; Ax Ay Bx By Cx Cy Dx Dy
# product(range(2), repeat=3) --&gt; 000 001 010 011 100 101 110 111
pools = [tuple(pool) for pool in args] * repeat
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)

``````

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2