aboutsummaryrefslogtreecommitdiff
path: root/challenge-236/jeanluc2020/python/ch-2.py
blob: 922e4ae219a075269f7a690f52dde9018794497c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/python3
#
# This is just me learning a bit of python.
# Look at the perl solution for a discussion of the details.

seen_index = {}

def get_loop(index, ints):
    loop = []
    index = ints[index]
    while not index in seen_index:
        seen_index[index] = 1
        loop.append(index)
        index = ints[index]
    return loop

def array_loops(*ints):
    loops = []
    seen_index.clear()
    for index in range(len(ints)):
        if index in seen_index:
            next
        loop = get_loop(index, ints)
        if len(loop) > 0:
            loops.append(loop)
    print("Output: ", len(loops))
    for loop in loops:
        print("[", end="")
        print(*loop, sep=", ", end="")
        print("]")

array_loops(4,6,3,8,15,0,13,18,7,16,14,19,17,5,11,1,12,2,9,10)
array_loops(0,1,13,7,6,8,10,11,2,14,16,4,12,9,17,5,3,18,15,19)
array_loops(9,8,3,11,5,7,13,19,12,4,14,10,18,2,16,1,0,15,6,17)