From 3bd6b8e121591added324af8a35e79f29c45c170 Mon Sep 17 00:00:00 2001 From: Kushagra Bansal Date: Wed, 21 Oct 2020 17:26:12 +0530 Subject: [PATCH 1/6] Update lucas_series.py Added another method to calculate lucas_numbers --- maths/lucas_series.py | 64 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/maths/lucas_series.py b/maths/lucas_series.py index 22ad893a6567..1fb6ddd8fbf2 100644 --- a/maths/lucas_series.py +++ b/maths/lucas_series.py @@ -1,22 +1,64 @@ -# Lucas Sequence Using Recursion - - -def recur_luc(n): +def recursive_lucas_number(n): """ - >>> recur_luc(1) + >>> recursive_lucas_number(1) 1 - >>> recur_luc(0) + >>> recursive_lucas_number(20) + 15127 + >>> recursive_lucas_number(0) 2 + >>> recursive_lucas_number(25) + 167761 + >>> recursive_lucas_number(-1.5) + Traceback (most recent call last): + ... + TypeError: recursive_lucas_number accepts only integer arguments. """ if n == 1: return n if n == 0: return 2 - return recur_luc(n - 1) + recur_luc(n - 2) + if isinstance(n, int) == False: + raise TypeError("recursive_lucas_number accepts only integer arguments.") + + return recursive_lucas_number(n - 1) + recursive_lucas_number(n - 2) + + +def dynamic_lucas_number(n: int) -> int: + """ + Returns the nth lucas number + >>> dynamic_lucas_number(1) + 1 + >>> dynamic_lucas_number(20) + 15127 + >>> dynamic_lucas_number(0) + 2 + >>> dynamic_lucas_number(25) + 167761 + >>> dynamic_lucas_number(-1.5) + Traceback (most recent call last): + ... + TypeError: dynamic_lucas_number accepts only integer arguments. + """ + if isinstance(n, int) == False: + raise TypeError("dynamic_lucas_number accepts only integer arguments.") + if n == 0: + return 2 + if n == 1: + return 1 + a, b = 2, 1 + for i in range(n): + a, b = b, a + b + return a if __name__ == "__main__": - limit = int(input("How many terms to include in Lucas series:")) - print("Lucas series:") - for i in range(limit): - print(recur_luc(i)) + from doctest import testmod + + testmod() + n = int(input("Enter the number of terms in lucas series:\n").strip()) + print("Using recursive function to calculate lucas series:") + for i in range(n): + print(recursive_lucas_number(i), end=" ") + print("\nUsing dynamic function to calculate lucas series:") + for i in range(n): + print(dynamic_lucas_number(i), end=" ") From 54d55abdb958c4282d7ae44d9cf8ded724c001cd Mon Sep 17 00:00:00 2001 From: Kushagra Bansal Date: Wed, 21 Oct 2020 17:30:58 +0530 Subject: [PATCH 2/6] Fix pre-commit error --- maths/lucas_series.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maths/lucas_series.py b/maths/lucas_series.py index 1fb6ddd8fbf2..facae1fe11af 100644 --- a/maths/lucas_series.py +++ b/maths/lucas_series.py @@ -17,7 +17,7 @@ def recursive_lucas_number(n): return n if n == 0: return 2 - if isinstance(n, int) == False: + if not isinstance(n, int): raise TypeError("recursive_lucas_number accepts only integer arguments.") return recursive_lucas_number(n - 1) + recursive_lucas_number(n - 2) @@ -39,7 +39,7 @@ def dynamic_lucas_number(n: int) -> int: ... TypeError: dynamic_lucas_number accepts only integer arguments. """ - if isinstance(n, int) == False: + if not isinstance(n, int): raise TypeError("dynamic_lucas_number accepts only integer arguments.") if n == 0: return 2 From cc94f5c00e05dccb994fd8f6b06e24db88f56c7b Mon Sep 17 00:00:00 2001 From: Kushagra Bansal Date: Sat, 24 Oct 2020 23:14:44 +0530 Subject: [PATCH 3/6] Update lucas_series.py --- maths/lucas_series.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/maths/lucas_series.py b/maths/lucas_series.py index facae1fe11af..0eebad35b75a 100644 --- a/maths/lucas_series.py +++ b/maths/lucas_series.py @@ -56,9 +56,8 @@ def dynamic_lucas_number(n: int) -> int: testmod() n = int(input("Enter the number of terms in lucas series:\n").strip()) + n = int(input("Enter the number of terms in lucas series:\n").strip()) print("Using recursive function to calculate lucas series:") - for i in range(n): - print(recursive_lucas_number(i), end=" ") + print(" ".join(str(recursive_lucas_number(i)) for i in range(n))) print("\nUsing dynamic function to calculate lucas series:") - for i in range(n): - print(dynamic_lucas_number(i), end=" ") + print(" ".join(str(dynamic_lucas_number(i)) for i in range(n))) From b16fb5579d3a2e9f1bcfa5925388b3837fa5ce3b Mon Sep 17 00:00:00 2001 From: Kushagra Bansal Date: Sat, 24 Oct 2020 23:16:33 +0530 Subject: [PATCH 4/6] Update lucas_series.py --- maths/lucas_series.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/maths/lucas_series.py b/maths/lucas_series.py index 0eebad35b75a..9ceddb4e9293 100644 --- a/maths/lucas_series.py +++ b/maths/lucas_series.py @@ -1,5 +1,7 @@ def recursive_lucas_number(n): """ + https://en.wikipedia.org/wiki/Lucas_number + Returns the nth lucas number >>> recursive_lucas_number(1) 1 >>> recursive_lucas_number(20) @@ -25,6 +27,7 @@ def recursive_lucas_number(n): def dynamic_lucas_number(n: int) -> int: """ + https://en.wikipedia.org/wiki/Lucas_number Returns the nth lucas number >>> dynamic_lucas_number(1) 1 From d47b50528e374d4f679938cbedc86ccc9d523df0 Mon Sep 17 00:00:00 2001 From: Kushagra Bansal Date: Mon, 26 Oct 2020 09:27:34 +0530 Subject: [PATCH 5/6] Update lucas_series.py --- maths/lucas_series.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/maths/lucas_series.py b/maths/lucas_series.py index 9ceddb4e9293..a9495b67ba3b 100644 --- a/maths/lucas_series.py +++ b/maths/lucas_series.py @@ -1,6 +1,9 @@ +""" +https://en.wikipedia.org/wiki/Lucas_number +""" + def recursive_lucas_number(n): """ - https://en.wikipedia.org/wiki/Lucas_number Returns the nth lucas number >>> recursive_lucas_number(1) 1 @@ -27,7 +30,6 @@ def recursive_lucas_number(n): def dynamic_lucas_number(n: int) -> int: """ - https://en.wikipedia.org/wiki/Lucas_number Returns the nth lucas number >>> dynamic_lucas_number(1) 1 From c5471bbbd82ea97b5fd28d925d0f0150e656ffcc Mon Sep 17 00:00:00 2001 From: Kushagra Bansal Date: Mon, 26 Oct 2020 09:30:06 +0530 Subject: [PATCH 6/6] Update lucas_series.py --- maths/lucas_series.py | 1 + 1 file changed, 1 insertion(+) diff --git a/maths/lucas_series.py b/maths/lucas_series.py index a9495b67ba3b..02eae8d8c658 100644 --- a/maths/lucas_series.py +++ b/maths/lucas_series.py @@ -2,6 +2,7 @@ https://en.wikipedia.org/wiki/Lucas_number """ + def recursive_lucas_number(n): """ Returns the nth lucas number