diff --git a/lab.py b/lab.py index 3c57d387909cc005db551e4fc34600ac91488dc2..04310fdc3b3053668bd4a7af0c601d4cb322f9b6 100644 --- a/lab.py +++ b/lab.py @@ -20,8 +20,11 @@ def scalar_fibonacci(n): >>> scalar_fibonacci(35) 9227465 """ - return 0 # stub - + if n == 0: + return 0 + if n == 1: + return 1 + return def vector_fibonacci(n): """ @@ -41,32 +44,44 @@ 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) + if n == 2: + return (1,1) + x = vector_fibonacci(n-1) + return (x[1], x[0] + x[1]) -def maximal_repetition_free_prefix(sequence): +def maximal_repetition_free_prefix(sequence, x): """ 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 len(sequence) < 2: + return sequence + elif sequence[x] in sequence[0:x + 1]: + return sequence[0: x - 2] + else: + return maximal_repetition_free_prefix(sequence, x+1) def maximal_repetition_free_subsequence(sequence):