knotting
def twist(a, n):
return a[:n][::-1] + a[n:]
def skip(a, k):
return a[k:] + a[:k]
def knot(a, x):
p = k = 0
for i in x:
a = skip(twist(skip(a, p), i), -p)
p = (p + i + k) % len(a)
k += 1
return a