cs315_coroutine_sample
#!/usr/bin/env python

# printing 2 combinations
def print2Combs(n):
    for i in xrange(0, n):
        for j in xrange(i+1, n):
            print (i,j)

print2Combs(5)
print

# returning next 2 combination each time
class CombIter:
    def __init__(self, n):
        self.n = n
    def next(self):
        self.j = self.j + 1
        if (self.j==self.n):
            self.i = self.i + 1
            self.j = self.i + 1
        if (self.i==self.n-1):
            raise StopIteration
        return (self.i, self.j)
    def __iter__(self):
        self.i = 0
        self.j = 0
        return self

for p in CombIter(5):
    print p
print

# same as above but using coroutines
def gen2Combs(n):
    for i in xrange(0, n):
        for j in xrange(i+1, n):
            yield (i,j)

for p in gen2Combs(5):
    print p
print
cs315_coroutine_sample.txt · Last modified: 2013/04/06 16:45 by bgedik

Page Tools