diff --git a/fib-fn.py b/fib-fn.py index 5bbb325..4ea6046 100644 --- a/fib-fn.py +++ b/fib-fn.py @@ -2,11 +2,11 @@ last_2 = 1 def next(): - global last_1, last_2 + global last_1, last_2 #use the global last_1 and last_2 - next_fib = last_1 + last_2 - last_1, last_2 = last_2, next_fib - + next_fib = last_1 + last_2 #store the sum of last_1 and last_2 + last_1, last_2 = last_2, next_fib #re-assignment of the variables. + # last_1 = last_2 && last_2 = next_fib return next_fib print next() diff --git a/fib_gen/example.py b/fib_gen/example.py index d65f288..0e9bd95 100644 --- a/fib_gen/example.py +++ b/fib_gen/example.py @@ -3,5 +3,7 @@ for n, i in zip(range(3), fib.fib()): print i +print type(fib.fib()) + # additional questions to address: # - what the heck do 'zip' and 'range' do, and why are they there? diff --git a/fib_gen/fib.py b/fib_gen/fib.py index 15fabcd..59b373e 100644 --- a/fib_gen/fib.py +++ b/fib_gen/fib.py @@ -2,16 +2,21 @@ # a generator. def fib(): - last_1 = 1 + last_1 = 1 # stored locally in this function last_2 = 1 while 1: - next_fib = last_1 + last_2 - last_1, last_2 = last_2, next_fib - yield next_fib + # next_fib = last_1 + last_2 + + # yield next_fib + yield (last_1 + last_2) + # last_1, last_2 = last_2, next_fib + last_1, last_2 = last_2, (last_1+last_2) # additional questions to address: # - could you swap the last two lines of the while statement? what are the # plusses and minuses of doing so? + + # - is there a way to condense the 'while' loop into two statements? try # getting rid of the next_fib variable. diff --git a/fib_gen/fib.pyc b/fib_gen/fib.pyc new file mode 100644 index 0000000..0a780eb Binary files /dev/null and b/fib_gen/fib.pyc differ diff --git a/fib_iter/example.py b/fib_iter/example.py index d65f288..2394a4a 100644 --- a/fib_iter/example.py +++ b/fib_iter/example.py @@ -1,7 +1,11 @@ import fib -for n, i in zip(range(3), fib.fib()): - print i +for n, i in zip(range(5), fib.fib()): # Gets the returned value of __iter__ + print n, i # additional questions to address: # - what the heck do 'zip' and 'range' do, and why are they there? +''' 'zip' returns a list of tuples, where the ith tuple contains the + ith element for each argument sequences of iterables. + 'range' is a function that contains iterator progressions. In this + example the iterator starts at 0 and ends at 2. ''' diff --git a/fib_iter/fib.pyc b/fib_iter/fib.pyc new file mode 100644 index 0000000..8c232bc Binary files /dev/null and b/fib_iter/fib.pyc differ diff --git a/fib_mod/fib.pyc b/fib_mod/fib.pyc new file mode 100644 index 0000000..eb3b720 Binary files /dev/null and b/fib_mod/fib.pyc differ 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/fib.pyc b/iter_bug/fib.pyc new file mode 100644 index 0000000..d629cb4 Binary files /dev/null and b/iter_bug/fib.pyc differ diff --git a/iter_bug/test.py b/iter_bug/test.py index db32b46..aeaced0 100644 --- a/iter_bug/test.py +++ b/iter_bug/test.py @@ -11,13 +11,14 @@ def test2(): i.next() assert i.next() == 3 -def test2(): +def test3(): f = fib.fib() i = iter(f) i.next() i.next() assert i.next() == 5 +# Tests test1() test2() test3() diff --git a/series-fn.py b/series-fn.py index 16e318d..39a799d 100644 --- a/series-fn.py +++ b/series-fn.py @@ -1,4 +1,4 @@ -n = 0 +n = 0 # 1. n is set to 0. def add_one(): global n diff --git a/series_gen/series.py b/series_gen/series.py index 9c7aecf..b6db663 100644 --- a/series_gen/series.py +++ b/series_gen/series.py @@ -3,6 +3,6 @@ def adder(): n = 0 - while 1: - n += 1 - yield n + while 1: # while true + n += 1 + yield n # returns generated n diff --git a/series_gen/series.pyc b/series_gen/series.pyc new file mode 100644 index 0000000..d917827 Binary files /dev/null and b/series_gen/series.pyc differ diff --git a/series_iter/series.pyc b/series_iter/series.pyc new file mode 100644 index 0000000..93b654d Binary files /dev/null and b/series_iter/series.pyc differ diff --git a/series_mod/series.py b/series_mod/series.py index 5da6adc..3e2c8fc 100644 --- a/series_mod/series.py +++ b/series_mod/series.py @@ -1,13 +1,17 @@ # this is an implementation of the 'series' functionality using a module. -n = 0 +n = 0 # Sets n to 0 def add_one(): - global n - n = n + 1 + global n # Sets a global n, init value 0. + n = n + 1 # increment n by 1 return n # additional questions to address: # - what does 'global' do, above? +# Uses the n thats defined locally and uses it as a global variable. + # - 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? + +# As long as the correct diff --git a/series_mod/series.pyc b/series_mod/series.pyc new file mode 100644 index 0000000..e59aa5c Binary files /dev/null and b/series_mod/series.pyc differ diff --git a/sieve_gen/example.py b/sieve_gen/example.py new file mode 100644 index 0000000..3449b65 --- /dev/null +++ b/sieve_gen/example.py @@ -0,0 +1,6 @@ +import sieve + +for n, i in zip(range(10), sieve.next()): + print i + + diff --git a/sieve_gen/sieve.py b/sieve_gen/sieve.py new file mode 100644 index 0000000..701eb55 --- /dev/null +++ b/sieve_gen/sieve.py @@ -0,0 +1,17 @@ +_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) + yield start + start+=1 + + diff --git a/sieve_gen/sieve.pyc b/sieve_gen/sieve.pyc new file mode 100644 index 0000000..144458c Binary files /dev/null and b/sieve_gen/sieve.pyc differ diff --git a/sieve_gen/test1.py b/sieve_gen/test1.py new file mode 100644 index 0000000..6cb9d1f --- /dev/null +++ b/sieve_gen/test1.py @@ -0,0 +1,8 @@ +import sieve + +def test1(): + s = sieve.next() + i = iter(s) + assert i.next() == 3 + +test1() diff --git a/sieve_gen/test2.py b/sieve_gen/test2.py new file mode 100644 index 0000000..15a6ecd --- /dev/null +++ b/sieve_gen/test2.py @@ -0,0 +1,12 @@ +import sieve + +def test2(): + s = sieve.next() + i = iter(s) + + for x in range(4): + i.next() + + assert i.next() == 13 + +test2() diff --git a/sieve_gen/test3.py b/sieve_gen/test3.py new file mode 100644 index 0000000..9e86418 --- /dev/null +++ b/sieve_gen/test3.py @@ -0,0 +1,12 @@ +import sieve + +def test3(): + s = sieve.next() + i = iter(s) + + for x in range(8): + i.next() + assert i.next() == 29 + + +test3() diff --git a/sieve_iter/example.py b/sieve_iter/example.py new file mode 100644 index 0000000..fbec41a --- /dev/null +++ b/sieve_iter/example.py @@ -0,0 +1,7 @@ +import sieve + +for n, i in zip(range(10),sieve.sieve()): + print i + + + diff --git a/sieve_iter/sieve.py b/sieve_iter/sieve.py new file mode 100644 index 0000000..4325f32 --- /dev/null +++ b/sieve_iter/sieve.py @@ -0,0 +1,28 @@ +# Implementation using iter + +class sieve(object): + def __init__(self): + self._primeslist = [2] + + def __iter__(self): + return self + + def _is_prime(self, n): + for i in self._primeslist: + if(n % i == 0): + return False + return True + + + def next(self): + start = self._primeslist[-1] + 1 + while 1: + if self._is_prime(start): + self._primeslist.append(start) + return start + + start+=1 + + + + diff --git a/sieve_iter/sieve.pyc b/sieve_iter/sieve.pyc new file mode 100644 index 0000000..85079a5 Binary files /dev/null and b/sieve_iter/sieve.pyc differ diff --git a/sieve_iter/test1.py b/sieve_iter/test1.py new file mode 100644 index 0000000..06bbaa9 --- /dev/null +++ b/sieve_iter/test1.py @@ -0,0 +1,8 @@ +import sieve + +def test1(): + s = sieve.sieve() + i = iter(s) + assert i.next() == 3 + +test1() diff --git a/sieve_iter/test2.py b/sieve_iter/test2.py new file mode 100644 index 0000000..2caccbe --- /dev/null +++ b/sieve_iter/test2.py @@ -0,0 +1,11 @@ +import sieve + +def test2(): + s = sieve.sieve() + i = iter(s) + + for x in range(4): + i.next() + assert i.next() == 13 + +test2() diff --git a/sieve_iter/test3.py b/sieve_iter/test3.py new file mode 100644 index 0000000..bfba4a3 --- /dev/null +++ b/sieve_iter/test3.py @@ -0,0 +1,11 @@ +import sieve + +def test3(): + s = sieve.sieve() + i = iter(s) + + for x in range(8): + i.next() + assert i.next() == 29 + +test3() diff --git a/sieve_mod/example.py b/sieve_mod/example.py new file mode 100644 index 0000000..61e7e10 --- /dev/null +++ b/sieve_mod/example.py @@ -0,0 +1,7 @@ +import sieve + +for n in range(10): + print sieve.next() + + + diff --git a/sieve_mod/sieve.py b/sieve_mod/sieve.py new file mode 100644 index 0000000..c1cfff4 --- /dev/null +++ b/sieve_mod/sieve.py @@ -0,0 +1,18 @@ +_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..c0fa1fc Binary files /dev/null and b/sieve_mod/sieve.pyc differ