On Feb 27, 10:41 pm, Mark Dickinson <[EMAIL PROTECTED]> wrote: > On Feb 27, 11:38 pm, Mark Dickinson <[EMAIL PROTECTED]> wrote: > > > yield map(len, (''.join(s)).split('|')) > > That line should have been just: > > yield map(len, s.split('|')) > > of course. > > Mark
It's easier: def rec( boxesleft, stonesleft, seq ): if 1== boxesleft: print( seq+ ( stonesleft, ) ) return for i in range( stonesleft+ 1 ): rec( boxesleft- 1, stonesleft- i, seq+ ( i, ) ) rec( 3, 4, () ) rec( 6, 1, () ) rec( 4, 2, () ) Just sort the list in text-ascending order, and it's pretty clear. It uses tuple concat., which may be slower than Marks. If you want an iterative, stay tuned. -- http://mail.python.org/mailman/listinfo/python-list