Skip to content
Snippets Groups Projects
Commit 4f3475c9 authored by Adam Schlichtmann's avatar Adam Schlichtmann
Browse files

lab updates

parent 738b6428
Branches master
No related tags found
No related merge requests found
......@@ -2,6 +2,7 @@
def scalar_fibonacci(n):
"""
Given a nonnegative integer n, return the nth Fibonacci number. For example:
......@@ -20,7 +21,11 @@ def scalar_fibonacci(n):
>>> scalar_fibonacci(35)
9227465
"""
return 0 # stub
if n == 1:
return 1
if n == 0:
return 0
return scalar_fibonacci(n-2) + scalar_fibonacci(n-1)
def vector_fibonacci(n):
......@@ -41,54 +46,68 @@ def vector_fibonacci(n):
>>> vector_fibonacci(35)
(5702887, 9227465)
>>> vector_fibonacci(350)
(3865462327928467072415604609040860366007401579690263197296200323999931849, 6254449428820551641549772190170184190608177514674331726439961915653414425)
(3865462327928467072415604609040860366007401579690263197296200323999931849L, 6254449428820551641549772190170184190608177514674331726439961915653414425L)
"""
return 0, 1 # stub
if n == 0:
return (0,0)
if n == 1:
return (0,1)
temp = vector_fibonacci(n-1)
return (temp[1],temp[0] + temp[1])
def maximal_repetition_free_prefix(sequence):
def maximal_repetition_free_prefix(sequence,n):
"""
Given a sequence, return its longest repetition-free prefix. For example:
>>> maximal_repetition_free_prefix([])
>>> maximal_repetition_free_prefix([],0)
[]
>>> maximal_repetition_free_prefix([5])
>>> maximal_repetition_free_prefix([5],0)
[5]
>>> maximal_repetition_free_prefix([5, 4])
>>> maximal_repetition_free_prefix([5, 4],0)
[5, 4]
>>> maximal_repetition_free_prefix([5, 5])
>>> maximal_repetition_free_prefix([5, 5],0)
[5]
>>> maximal_repetition_free_prefix([5, 4, 5])
>>> maximal_repetition_free_prefix([5, 4, 5],0)
[5, 4]
>>> maximal_repetition_free_prefix([5, 4, 5, 3])
>>> maximal_repetition_free_prefix([5, 4, 5, 3],0)
[5, 4]
>>> maximal_repetition_free_prefix([3, 2, 1, 2, 4])
>>> maximal_repetition_free_prefix([3, 2, 1, 2, 4],0)
[3, 2, 1]
"""
return [] # stub
if n == len(sequence):
return sequence
if sequence[n] in sequence[:n]:
return sequence[:n]
return maximal_repetition_free_prefix(sequence,n+1)
# n^2
def maximal_repetition_free_subsequence(sequence):
def maximal_repetition_free_subsequence(sequence,n):
"""
Given a sequence, return the last of its longest repetition-free subsequences. For example:
>>> maximal_repetition_free_subsequence([])
>>> maximal_repetition_free_subsequence([],-1)
[]
>>> maximal_repetition_free_subsequence([5])
>>> maximal_repetition_free_subsequence([5],0)
[5]
>>> maximal_repetition_free_subsequence([5, 4])
>>> maximal_repetition_free_subsequence([5, 4],1)
[5, 4]
>>> maximal_repetition_free_subsequence([5, 4, 5])
>>> maximal_repetition_free_subsequence([5, 4, 5],2)
[4, 5]
>>> maximal_repetition_free_subsequence([5, 4, 5, 3])
>>> maximal_repetition_free_subsequence([5, 4, 5, 3],3)
[4, 5, 3]
>>> maximal_repetition_free_subsequence([3, 2, 1, 2, 4])
>>> maximal_repetition_free_subsequence([3, 2, 1, 2, 4],4)
[1, 2, 4]
>>> maximal_repetition_free_subsequence([1, 2, 1, 2, 1, 2, 1])
>>> maximal_repetition_free_subsequence([1, 2, 1, 2, 1, 2, 1],6)
[2, 1]
"""
return [] # stub
if n < 0:
return sequence
if sequence[n-1] in sequence[n:]:
return sequence[n:]
return maximal_repetition_free_subsequence(sequence,n-1)
def maximal_repetition_free_subsequence_version_2(sequence):
......@@ -119,23 +138,27 @@ def maximal_repetition_free_subsequence_version_2(sequence):
return result
def maximal_repetition_free_subsequence_version_3(sequence):
def maximal_repetition_free_subsequence_version_3(sequence, n):
"""
Given a sequence, return the last of its longest repetition-free subsequences. For example:
>>> maximal_repetition_free_subsequence_version_3([])
>>> maximal_repetition_free_subsequence_version_3([], -1)
[]
>>> maximal_repetition_free_subsequence_version_3([5])
>>> maximal_repetition_free_subsequence_version_3([5], 0)
[5]
>>> maximal_repetition_free_subsequence_version_3([5, 4])
>>> maximal_repetition_free_subsequence_version_3([5, 4], 1)
[5, 4]
>>> maximal_repetition_free_subsequence_version_3([5, 4, 5])
>>> maximal_repetition_free_subsequence_version_3([5, 4, 5], 2)
[4, 5]
>>> maximal_repetition_free_subsequence_version_3([5, 4, 5, 3])
>>> maximal_repetition_free_subsequence_version_3([5, 4, 5, 3], 3)
[4, 5, 3]
>>> maximal_repetition_free_subsequence_version_3([3, 2, 1, 2, 4])
>>> maximal_repetition_free_subsequence_version_3([3, 2, 1, 2, 4], 4)
[1, 2, 4]
>>> maximal_repetition_free_subsequence_version_3([1, 2, 1, 2, 1, 2, 1])
>>> maximal_repetition_free_subsequence_version_3([1, 2, 1, 2, 1, 2, 1], 6)
[2, 1]
"""
return [] # stub
if n < 0:
return sequence
if sequence[n-1] in sequence[n:]:
return sequence[n:]
return maximal_repetition_free_subsequence_version_3(sequence,n-1)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment