number generator

Paul Rubin http
Wed Mar 14 07:53:00 CET 2007


Paul Rubin <http://phr.cx@NOSPAM.invalid> writes:
>     # yield all partitions of n having length k, with many duplications
>     def _partitions(n,k):
>         if k==0: return
>         for i in xrange(1,n-k+1):
>             for p in partitions(n-i, k-1):
>                 yield (i,)+p

Bah, I managed to mess up the above function during transcription.
Corrected and sped-up version:

    # yield all partitions of n having length k, with many duplications
    def _partitions(n,k,low=1):
        if k==1:
            yield (n,)
            return
        for i in xrange(low, n-k+1):
            for p in _partitions(n-i, k-1, i):
                yield (i,)+p



More information about the Python-list mailing list