Hi folks,

I am trying to cyclically rotate a seq until it reached the beginning stage again.
I would like to be able to rotate in both directions and using any arbitrary interval.
I think that I have this correct, but would be happy for someone to check it and also
i am interested in any improvements or enhancements. It is important that this
work correctly or the whole rest of my code will be in barf *^-^* hee hee. So
any help would be appreciated.


#!/usr/bin/env python

import sys
import random


# cyclically rotate a sequence # -- -------------------------------------------------------- # should work on any sequence type # should work with any hop(n) interval # should also work in both directions (left or right) # -- --------------------------------------------------------

def rotate(seq, n=1):
        if len(seq) == 0:
                return seq
        # Normalize n, using modulo - even works for negative n
        n = n % len(seq)
        return seq[n:] + seq[:n]

                
def test():
    start = 1
    x = [7, 2, 1, 0, 11, 6, 5, 4]
    print; print x; print '--' * 8
    for i in range(len(x)):
                out = rotate(x, start)
                print out
                start = start + 1

if __name__ == "__main__":
        test()


# -------- EOF --------

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to