diff --git a/fib_iter/example.py b/fib_iter/example.py index d65f288..5b689e0 100644 --- a/fib_iter/example.py +++ b/fib_iter/example.py @@ -5,3 +5,4 @@ # additional questions to address: # - what the heck do 'zip' and 'range' do, and why are they there? +# "zip" iterates over two ranges, and "range" denotes a range from 0 to the number in parentheses (0-3, so a range of 4) diff --git a/iter_bug/fib.py b/iter_bug/fib.py index 59a39a4..03e0d38 100644 --- a/iter_bug/fib.py +++ b/iter_bug/fib.py @@ -12,5 +12,5 @@ def __iter__(self): def next(self): next_fib = self.last_1 + self.last_2 - self.last_1, self.last2 = self.last_2, next_fib + self.last_1, self.last_2 = self.last_2, next_fib return next_fib diff --git a/iter_bug/test.py b/iter_bug/test.py index db32b46..2740f33 100644 --- a/iter_bug/test.py +++ b/iter_bug/test.py @@ -11,7 +11,7 @@ def test2(): i.next() assert i.next() == 3 -def test2(): +def test3(): f = fib.fib() i = iter(f) i.next() diff --git a/series_gen/example.py b/series_gen/example.py index 62b7751..7dc39e0 100644 --- a/series_gen/example.py +++ b/series_gen/example.py @@ -1,7 +1,7 @@ -import series +import series #1 -for i in series.adder(): - print i +for i in series.adder(): #2 + print i #6 #11 #16 - if i > 2: - break + if i > 2: #7 #12 #17 + break #18 diff --git a/series_gen/series.py b/series_gen/series.py index 9c7aecf..1e101b8 100644 --- a/series_gen/series.py +++ b/series_gen/series.py @@ -2,7 +2,7 @@ # a generator. def adder(): - n = 0 - while 1: - n += 1 - yield n + n = 0 #2 + while 1: #3 #8 #13 + n += 1 #4 #9 #14 + yield n #5 #10 #15 diff --git a/series_mod/example.py b/series_mod/example.py index 7a3c464..87d4067 100644 --- a/series_mod/example.py +++ b/series_mod/example.py @@ -1,5 +1,5 @@ -import series +import series_mod -print series.add_one() -print series.add_one() -print series.add_one() +print series_mod.add_one() +print series_mod.add_one() +print series_mod.add_one() diff --git a/series_mod/series.py b/series_mod/series.py deleted file mode 100644 index 5da6adc..0000000 --- a/series_mod/series.py +++ /dev/null @@ -1,13 +0,0 @@ -# this is an implementation of the 'series' functionality using a module. - -n = 0 - -def add_one(): - global n - n = n + 1 - return n - -# additional questions to address: -# - what does 'global' do, above? -# - what naming limitations are there on series.py? Could we name it -# series_mod.py or series-mod.py, and still have it work as a module? diff --git a/sieve_gen/sieve_gen.py b/sieve_gen/sieve_gen.py new file mode 100644 index 0000000..4307112 --- /dev/null +++ b/sieve_gen/sieve_gen.py @@ -0,0 +1,20 @@ +def sieve(): + _primeslist = [2] + + while 1: + yield next(_primeslist) + +def _is_prime(primes, n): + for i in primes: + if n % i == 0: + return False + return True + +def next(_primeslist): + start = _primeslist[-1] + 1 + while 1: + if _is_prime(_primeslist, start): + _primeslist.append(start) + return start + + start += 1 diff --git a/sieve_gen/sieve_gen.pyc b/sieve_gen/sieve_gen.pyc new file mode 100644 index 0000000..0c61b53 Binary files /dev/null and b/sieve_gen/sieve_gen.pyc differ diff --git a/sieve_gen/test1.py b/sieve_gen/test1.py new file mode 100644 index 0000000..ff79d2c --- /dev/null +++ b/sieve_gen/test1.py @@ -0,0 +1,9 @@ +import sieve_gen + +for i in sieve_gen.sieve(): + print i + + if i >= 10: + break + +assert i == 11 diff --git a/sieve_gen/test2.py b/sieve_gen/test2.py new file mode 100644 index 0000000..b83c8e5 --- /dev/null +++ b/sieve_gen/test2.py @@ -0,0 +1,6 @@ +import sieve_gen + +for n, i in zip(range(10), sieve_gen.sieve()): + print i + +assert i == 31 diff --git a/sieve_gen/test3.py b/sieve_gen/test3.py new file mode 100644 index 0000000..f21eb60 --- /dev/null +++ b/sieve_gen/test3.py @@ -0,0 +1,8 @@ +import sieve_gen + +find = 100 +gen = sieve_gen.sieve() +for i in range(find - 1): + found = next(gen) +print found +assert found == 541 diff --git a/sieve_iter/sieve_iter.py b/sieve_iter/sieve_iter.py new file mode 100644 index 0000000..0ddb36e --- /dev/null +++ b/sieve_iter/sieve_iter.py @@ -0,0 +1,21 @@ +class sieve(object): + def __init__(self): + self._primeslist = [2] + + def __iter__(self): + return self + + def _is_prime(self, primes, n): + for i in primes: + if n % i == 0: + return False + return True + + def next(self): + self.start = self._primeslist[-1] + 1 + while 1: + if self._is_prime(self._primeslist, self.start): + self._primeslist.append(self.start) + return self.start + self.start += 1 + diff --git a/sieve_iter/sieve_iter.pyc b/sieve_iter/sieve_iter.pyc new file mode 100644 index 0000000..b4080c1 Binary files /dev/null and b/sieve_iter/sieve_iter.pyc differ diff --git a/sieve_iter/test1.py b/sieve_iter/test1.py new file mode 100644 index 0000000..2fc0aa5 --- /dev/null +++ b/sieve_iter/test1.py @@ -0,0 +1,9 @@ +import sieve_iter + +for i in sieve_iter.sieve(): + print i + + if i >= 10: + break + +assert i == 11 diff --git a/sieve_iter/test2.py b/sieve_iter/test2.py new file mode 100644 index 0000000..5dff059 --- /dev/null +++ b/sieve_iter/test2.py @@ -0,0 +1,6 @@ +import sieve_iter + +for n, i in zip(range(10), sieve_iter.sieve()): + print i + +assert i == 31 diff --git a/sieve_iter/test3.py b/sieve_iter/test3.py new file mode 100644 index 0000000..4b19c94 --- /dev/null +++ b/sieve_iter/test3.py @@ -0,0 +1,9 @@ +import sieve_iter + +find = 100 +sieve = sieve_iter.sieve() +i = iter(sieve) +for n in range(find - 1): + found = i.next() +print found +assert found == 541 diff --git a/sieve_mod/sieve_mod.py b/sieve_mod/sieve_mod.py new file mode 100644 index 0000000..2f989f2 --- /dev/null +++ b/sieve_mod/sieve_mod.py @@ -0,0 +1,16 @@ +_primeslist = [2] + +def _is_prime(primes, n): + for i in primes: + if n % i == 0: + return False + return True + +def next(): + start = _primeslist[-1] + 1 + while 1: + if _is_prime(_primeslist, start): + _primeslist.append(start) + return start + + start += 1 diff --git a/sieve_mod/sieve_mod.pyc b/sieve_mod/sieve_mod.pyc new file mode 100644 index 0000000..bdf9077 Binary files /dev/null and b/sieve_mod/sieve_mod.pyc differ diff --git a/sieve_mod/test.py b/sieve_mod/test.py new file mode 100644 index 0000000..5a91e8b --- /dev/null +++ b/sieve_mod/test.py @@ -0,0 +1,4 @@ +import sieve_mod + +for n in range(10): + print sieve_mod.next()