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