just couldn't help taking the bait...

def morris(seed) :

     """
     >>> m = morris('3447221')
     >>> m.next()
     '1324172211'
     >>> m.next()
     '1113121411172221'
     >>> m.next()
     '31131112111431173211'
     """

     assert isinstance(seed,basestring) and seed.isdigit(),"bad seed"

     def itially(z) :
         feedback.z = z
         while True :
             yield feedback.z

     def feedback(gen) :
         while True :
             feedback.z = gen.next()
             yield feedback.z

     def morrisify(number) :
         from itertools import groupby
         for digit,sequence in groupby(number) :
             yield str(len(tuple(sequence)))
             yield digit

     return feedback(''.join(morrisify(number))
                       for number in itially(seed))
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to