replaced pattern with my own version

This commit is contained in:
Stephen McQuay 2011-05-04 21:36:42 -06:00
parent 09fc14b99d
commit 9a366b0428
1 changed files with 12 additions and 18 deletions

View File

@ -5,6 +5,7 @@ import numpy as np
from functools import wraps
import itertools
import interp
import logging
log = logging.getLogger('interp')
@ -202,30 +203,20 @@ def memoize(f):
return cache[x]
return memf
def combinations_with_replacement(iterable, r):
"""
What I really need for the pattern function only
exists in python 2.7 and greater. The docs suggest
the implementation in this function as a
replacement.
source:
http://docs.python.org/library/itertools.html#itertools.combinations_with_replacement
"""
pool = tuple(iterable)
n = len(pool)
for indices in itertools.product(range(n), repeat=r):
if sorted(indices) == list(indices):
yield tuple(pool[i] for i in indices)
@memoize
def pattern(simplex_size, nu):
"""
my useful docstring
"""
log.debug("pattern: simplex: %d, order: %d" % (simplex_size, nu))
return [i for i in combinations_with_replacement(xrange(simplex_size), nu) if len(set(i)) != 1]
log.error("pattern: simplex: %d, order: %d" % (simplex_size, nu))
r = []
for i in itertools.product(xrange(simplex_size), repeat = nu):
if len(set(i)) !=1:
r.append(tuple(sorted(i)))
return list(set(r))
if __name__ == '__main__':
print len(pattern(3, 2)), pattern(3, 2)
@ -236,6 +227,7 @@ if __name__ == '__main__':
print len(pattern(3, 4)), pattern(3, 4)
print len(pattern(4, 4)), pattern(4, 4)
print len(pattern(3, 2)), pattern(3, 2)
print len(pattern(4, 2)), pattern(4, 2)
@ -244,6 +236,7 @@ if __name__ == '__main__':
print len(pattern(3, 4)), pattern(3, 4)
print len(pattern(4, 4)), pattern(4, 4)
print len(pattern(3, 2)), pattern(3, 2)
print len(pattern(4, 2)), pattern(4, 2)
@ -252,6 +245,7 @@ if __name__ == '__main__':
print len(pattern(3, 4)), pattern(3, 4)
print len(pattern(4, 4)), pattern(4, 4)
print len(pattern(3, 2)), pattern(3, 2)
print len(pattern(4, 2)), pattern(4, 2)