all possible combinations

Anton Vredegoor anton.vredegoor at gmail.com
Thu Jul 28 12:38:39 CEST 2005


John Machin wrote:

> You don't need to use random sampling. Paul Rubin has shown how it can
> be done deterministically. The following is a generalisation of his
> code; it generates all possible assemblies of size n from a list of
> parts. Is this helpful?
>
> def all_size_n_knickers(rqd_size, pieces):
>      npieces = len(pieces)
>      knicker_count = npieces ** rqd_size
>      austen = [npieces ** (rqd_size-k-1) for k in xrange(rqd_size)]
>      for i in xrange(knicker_count):
>          knicker = [pieces[j] for j in [(i // d) % npieces for d in austen]]
>          yield knicker
>
> for alist in all_size_n_knickers(4, 'abc'):
>      print ''.join(alist)
>
> print
> print list(all_size_n_knickers(2, [1, 42, 666]))

Just testing out my ELCH JythonConsole :-)

def unint(i,symbols):
	res = []
	radix = len(symbols)
	while i:
		i,r = divmod(i,radix)
		res.append(symbols[r])
	return res[::-1]

start = int('10000',3)
finish = int('20000',3)
for i in range(start,finish):
	print ''.join(unint(i,'abc')[1:])

This makes me wonder why we still don't have something like the unint
function above in the standard distribution.

Anton




More information about the Python-list mailing list