n does not get very big, we can derive the n-th solution from the previous ones iteratively.
Python has the well-known
groupby() function in the
itertools module which is ideal to solve problems like this.
The grouping produced by
groupby() on the string
[print(k, list(g)) for k, g in itertools.groupby('11211222')] >>> 1 ['1', '1'] >>> 2 ['2'] >>> 1 ['1', '1'] >>> 2 ['2', '2', '2']
You could then use this results to derive the next sequence, with something similar to
''.join([str(len(list(g))) + k for k, g in itertools.groupby(s)])
which concatenates the length of the group (the number of repetitions of the digit) and the digit itself for each group returned by