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..4a0cffa 100644 --- a/iter_bug/fib.py +++ b/iter_bug/fib.py @@ -7,10 +7,10 @@ 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 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? 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() + 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 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 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 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 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 0000000..6928491 Binary files /dev/null and b/sieve_mod/sieve.pyc differ diff --git a/sieve_mod/sieve.py~ b/sieve_mod/sieve.py~ new file mode 100644 index 0000000..c2ec63a --- /dev/null +++ b/sieve_mod/sieve.py~ @@ -0,0 +1,23 @@ +# 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 + +for n in range(10): + print next() +