From f9b97ec2031d343c8ccb5a0aa8dc0a9f57de36df Mon Sep 17 00:00:00 2001 From: David Date: Thu, 17 Jan 2013 15:51:46 -0500 Subject: [PATCH 1/8] fixed the glitch --- fib-fn.py | 10 +++++----- fib_iter/example.py | 2 +- iter_bug/fib.py | 7 +++++-- iter_bug/test.py | 31 +++++++++++++++++++++---------- series_gen/series.py | 1 + series_iter/series.py | 10 +++++----- series_mod/series.py | 8 ++++---- 7 files changed, 42 insertions(+), 27 deletions(-) diff --git a/fib-fn.py b/fib-fn.py index 5bbb325..dd68155 100644 --- a/fib-fn.py +++ b/fib-fn.py @@ -1,13 +1,13 @@ -last_1 = 1 -last_2 = 1 +last_1 = 1 # define last_1 as 1 +last_2 = 1 # define last_2 as 1 def next(): global last_1, last_2 - next_fib = last_1 + last_2 - last_1, last_2 = last_2, next_fib + next_fib = last_1 + last_2 # set the next fib as the previous two fibonaccci numbers + last_1, last_2 = last_2, next_fib # define last_1 as last_2, and set last_2 as next_fib - return next_fib + return next_fib # print out the last_fib number print next() print next() diff --git a/fib_iter/example.py b/fib_iter/example.py index d65f288..3492d2b 100644 --- a/fib_iter/example.py +++ b/fib_iter/example.py @@ -1,6 +1,6 @@ import fib -for n, i in zip(range(3), fib.fib()): +for n, i in zip(range(5), fib.fib()): print i # additional questions to address: diff --git a/iter_bug/fib.py b/iter_bug/fib.py index 59a39a4..d82d6dd 100644 --- a/iter_bug/fib.py +++ b/iter_bug/fib.py @@ -7,10 +7,13 @@ def __init__(self): self.last_1 = 1 self.last_2 = 1 - def __iter__(self): + def __iter__(self): return 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 + + def value(self): return next_fib diff --git a/iter_bug/test.py b/iter_bug/test.py index db32b46..3f58d2f 100644 --- a/iter_bug/test.py +++ b/iter_bug/test.py @@ -1,22 +1,33 @@ import fib +#class fib(object): +# def __init__(self): +# self.last_1 = 1 +# self.last_2 = 1 + +# def __iter__(self): +# return self + +# def next(self): +# next_fib = self.last_1 + self.last_2 +# self.last_1, self.last2 = self.last_2, next_fib +# return next_fib + + def test1(): f = fib.fib() - i = iter(f) - assert i.next() == 2 + assert f.next() == 2 def test2(): f = fib.fib() - i = iter(f) - i.next() - assert i.next() == 3 + f.next() + assert f.next() == 3 -def test2(): +def test3(): f = fib.fib() - i = iter(f) - i.next() - i.next() - assert i.next() == 5 + f.next() + f.next() + assert f.next() == 5 test1() test2() diff --git a/series_gen/series.py b/series_gen/series.py index 9c7aecf..074e968 100644 --- a/series_gen/series.py +++ b/series_gen/series.py @@ -6,3 +6,4 @@ def adder(): while 1: n += 1 yield n + \ No newline at end of file diff --git a/series_iter/series.py b/series_iter/series.py index 38835b5..0c34498 100644 --- a/series_iter/series.py +++ b/series_iter/series.py @@ -3,12 +3,12 @@ # obeys the iterator protocol. class adder(object): - def __init__(self): - self.n = 0 + def __init__(self): # creates instance of adder class + self.n = 0 # sets the n value to 0 for def __iter__(self): - return self + return self # returns value of self - def next(self): - self.n += 1 + def next(self): # defines what happens when iterator happens + self.n += 1 # ADD 1 to n return self.n diff --git a/series_mod/series.py b/series_mod/series.py index 5da6adc..1d54a07 100644 --- a/series_mod/series.py +++ b/series_mod/series.py @@ -1,11 +1,11 @@ # this is an implementation of the 'series' functionality using a module. -n = 0 +n = 0 # n = 0 def add_one(): - global n - n = n + 1 - return n + global n # pull the n value + n = n + 1 # add 1 to the n + return n # return n value # additional questions to address: # - what does 'global' do, above? From 1186acc8638e14f512d567a1c045df5e5b9f6c32 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 17 Jan 2013 15:55:59 -0500 Subject: [PATCH 2/8] fixed the glitch part 2 --- iter_bug/fib.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/iter_bug/fib.py b/iter_bug/fib.py index d82d6dd..4a0cffa 100644 --- a/iter_bug/fib.py +++ b/iter_bug/fib.py @@ -14,6 +14,3 @@ def next(self): next_fib = self.last_1 + self.last_2 self.last_1, self.last_2 = self.last_2, next_fib return next_fib - - def value(self): - return next_fib From d1d75e073596fa790102dc9effbd925743374d94 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 23 Jan 2013 14:25:11 -0500 Subject: [PATCH 3/8] added sieve_mod --- sieve-fn.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sieve-fn.py b/sieve-fn.py index 704b059..c2ec63a 100644 --- a/sieve-fn.py +++ b/sieve-fn.py @@ -20,3 +20,4 @@ def next(): for n in range(10): print next() + From 362b0e3debf69653943eba913ae0cb8a28e3b784 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 23 Jan 2013 14:27:55 -0500 Subject: [PATCH 4/8] added sieve_mod --- sieve_mod/example.py | 5 +++++ sieve_mod/example.py~ | 5 +++++ sieve_mod/sieve.py | 21 +++++++++++++++++++++ sieve_mod/sieve.pyc | Bin 0 -> 700 bytes sieve_mod/sieve.py~ | 23 +++++++++++++++++++++++ 5 files changed, 54 insertions(+) create mode 100644 sieve_mod/example.py create mode 100644 sieve_mod/example.py~ create mode 100644 sieve_mod/sieve.py create mode 100644 sieve_mod/sieve.pyc create mode 100644 sieve_mod/sieve.py~ diff --git a/sieve_mod/example.py b/sieve_mod/example.py new file mode 100644 index 0000000..87dabb6 --- /dev/null +++ b/sieve_mod/example.py @@ -0,0 +1,5 @@ +import sieve + + +for n in range(10): + print sieve.next() \ No newline at end of file diff --git a/sieve_mod/example.py~ b/sieve_mod/example.py~ new file mode 100644 index 0000000..5201981 --- /dev/null +++ b/sieve_mod/example.py~ @@ -0,0 +1,5 @@ +import sieve + + +for n in range(10): + print next() \ No newline at end of file diff --git a/sieve_mod/sieve.py b/sieve_mod/sieve.py new file mode 100644 index 0000000..ca3c589 --- /dev/null +++ b/sieve_mod/sieve.py @@ -0,0 +1,21 @@ +# an implementation of Eratosthenes' Sieve: +# http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes + +_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.pyc b/sieve_mod/sieve.pyc new file mode 100644 index 0000000000000000000000000000000000000000..69284912b572b60b745fde54e22573f8c82f24a6 GIT binary patch literal 700 zcmb_Z+e*Vg5S>k`ZPj{tQS?RdDL&Lt5L6HqTYW6p2tq+hO%~nST$nv!E`Bpf94XpvbYrp~$7cE1^a? zfRMqRM-y2e0>%e4A! Date: Wed, 23 Jan 2013 15:01:48 -0500 Subject: [PATCH 5/8] added sieve_iter --- sieve_iter/example.py | 4 ++++ sieve_iter/sieve.py | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 sieve_iter/example.py create mode 100644 sieve_iter/sieve.py diff --git a/sieve_iter/example.py b/sieve_iter/example.py new file mode 100644 index 0000000..9b3ee25 --- /dev/null +++ b/sieve_iter/example.py @@ -0,0 +1,4 @@ +import sieve + +for n, i in zip(range(10), sieve.sieve()): + print i \ No newline at end of file diff --git a/sieve_iter/sieve.py b/sieve_iter/sieve.py new file mode 100644 index 0000000..10c577f --- /dev/null +++ b/sieve_iter/sieve.py @@ -0,0 +1,24 @@ +# an iterative implementation of Eratosthenes' Sieve: +# http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes + + +def _is_prime(primes, n): + for i in primes: + if n % i == 0: + return False + return True + +class sieve(object): + def __init__(self): + self._primeslist = [2] + + def __iter__(self): + return self + + def next(self): + start = self._primeslist[-1] + 1 + while 1: + if _is_prime(self._primeslist, start): + self._primeslist.append(start) + return start + start += 1 From 2d51f32f1fb15351e9807017b3da03b559560f5c Mon Sep 17 00:00:00 2001 From: David Date: Wed, 23 Jan 2013 15:16:18 -0500 Subject: [PATCH 6/8] added sieve_gen --- sieve_gen/example.py | 4 ++++ sieve_gen/sieve.py | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 sieve_gen/example.py create mode 100644 sieve_gen/sieve.py diff --git a/sieve_gen/example.py b/sieve_gen/example.py new file mode 100644 index 0000000..3ed089b --- /dev/null +++ b/sieve_gen/example.py @@ -0,0 +1,4 @@ +import sieve + +for n,i in zip(range(10), sieve.sieve()): + print i \ No newline at end of file diff --git a/sieve_gen/sieve.py b/sieve_gen/sieve.py new file mode 100644 index 0000000..4988db4 --- /dev/null +++ b/sieve_gen/sieve.py @@ -0,0 +1,21 @@ +# a generator implementation of Eratosthenes' Sieve: +# http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes + +def _is_prime(primes, n): + for i in primes: + if n % i == 0: + return False + return True + +def sieve(): + _primeslist = [2] + start = _primeslist[-1] + 1 + + while 1: + if _is_prime(_primeslist, start): + _primeslist.append(start) + yield start + + start += 1 + + \ No newline at end of file From 96ebe857551b94d53710b07534bef998525e6d71 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 24 Jan 2013 12:32:58 -0500 Subject: [PATCH 7/8] added sieve_iter tests --- sieve_iter/test1.py | 8 ++++++++ sieve_iter/test2.py | 8 ++++++++ sieve_iter/test3.py | 8 ++++++++ 3 files changed, 24 insertions(+) create mode 100644 sieve_iter/test1.py create mode 100644 sieve_iter/test2.py create mode 100644 sieve_iter/test3.py diff --git a/sieve_iter/test1.py b/sieve_iter/test1.py new file mode 100644 index 0000000..989c0b1 --- /dev/null +++ b/sieve_iter/test1.py @@ -0,0 +1,8 @@ +import sieve + +for n, i in zip(range(10), sieve.sieve()): + print i + +assert i == 31 + +print "Test 1 Worked!" \ No newline at end of file diff --git a/sieve_iter/test2.py b/sieve_iter/test2.py new file mode 100644 index 0000000..2712b94 --- /dev/null +++ b/sieve_iter/test2.py @@ -0,0 +1,8 @@ +import sieve + +for n, i in zip(range(1), sieve.sieve()): + print i + +assert i == 3 + +print "Test 2 Worked!" \ No newline at end of file diff --git a/sieve_iter/test3.py b/sieve_iter/test3.py new file mode 100644 index 0000000..234f74d --- /dev/null +++ b/sieve_iter/test3.py @@ -0,0 +1,8 @@ +import sieve + +for n, i in zip(range(30), sieve.sieve()): + print i + +assert i == 127 + +print "Test 3 Worked!" \ No newline at end of file From c5a6897d23381bec1d879849d6085bb2e4d43e5c Mon Sep 17 00:00:00 2001 From: David Date: Thu, 24 Jan 2013 12:35:47 -0500 Subject: [PATCH 8/8] added sieve_gen tests --- sieve_gen/test1.py | 8 ++++++++ sieve_gen/test2.py | 8 ++++++++ sieve_gen/test3.py | 8 ++++++++ 3 files changed, 24 insertions(+) create mode 100644 sieve_gen/test1.py create mode 100644 sieve_gen/test2.py create mode 100644 sieve_gen/test3.py diff --git a/sieve_gen/test1.py b/sieve_gen/test1.py new file mode 100644 index 0000000..989c0b1 --- /dev/null +++ b/sieve_gen/test1.py @@ -0,0 +1,8 @@ +import sieve + +for n, i in zip(range(10), sieve.sieve()): + print i + +assert i == 31 + +print "Test 1 Worked!" \ No newline at end of file diff --git a/sieve_gen/test2.py b/sieve_gen/test2.py new file mode 100644 index 0000000..2712b94 --- /dev/null +++ b/sieve_gen/test2.py @@ -0,0 +1,8 @@ +import sieve + +for n, i in zip(range(1), sieve.sieve()): + print i + +assert i == 3 + +print "Test 2 Worked!" \ No newline at end of file diff --git a/sieve_gen/test3.py b/sieve_gen/test3.py new file mode 100644 index 0000000..234f74d --- /dev/null +++ b/sieve_gen/test3.py @@ -0,0 +1,8 @@ +import sieve + +for n, i in zip(range(30), sieve.sieve()): + print i + +assert i == 127 + +print "Test 3 Worked!" \ No newline at end of file