From 11a5afd8a10b21dfebddcf3c6022402ac463b634 Mon Sep 17 00:00:00 2001 From: Dhruv Date: Wed, 7 Oct 2020 15:29:55 +0530 Subject: [PATCH] Add type hints and default args for problem 20 (#2962) - Improved variable names - Added type hints - Added default argument values for validate_solutions script --- project_euler/problem_20/sol1.py | 17 ++++++++++------- project_euler/problem_20/sol2.py | 8 +++++--- project_euler/problem_20/sol3.py | 8 +++++--- project_euler/problem_20/sol4.py | 8 +++++--- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/project_euler/problem_20/sol1.py b/project_euler/problem_20/sol1.py index 13b3c987f..b472024e5 100644 --- a/project_euler/problem_20/sol1.py +++ b/project_euler/problem_20/sol1.py @@ -1,4 +1,6 @@ """ +Problem 20: https://projecteuler.net/problem=20 + n! means n × (n − 1) × ... × 3 × 2 × 1 For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, @@ -8,14 +10,15 @@ Find the sum of the digits in the number 100! """ -def factorial(n): +def factorial(num: int) -> int: + """Find the factorial of a given number n""" fact = 1 - for i in range(1, n + 1): + for i in range(1, num + 1): fact *= i return fact -def split_and_add(number): +def split_and_add(number: int) -> int: """Split number digits and add them.""" sum_of_digits = 0 while number > 0: @@ -25,8 +28,8 @@ def split_and_add(number): return sum_of_digits -def solution(n): - """Returns the sum of the digits in the number 100! +def solution(num: int = 100) -> int: + """Returns the sum of the digits in the factorial of num >>> solution(100) 648 >>> solution(50) @@ -42,8 +45,8 @@ def solution(n): >>> solution(1) 1 """ - f = factorial(n) - result = split_and_add(f) + nfact = factorial(num) + result = split_and_add(nfact) return result diff --git a/project_euler/problem_20/sol2.py b/project_euler/problem_20/sol2.py index 14e591795..92e1e724a 100644 --- a/project_euler/problem_20/sol2.py +++ b/project_euler/problem_20/sol2.py @@ -1,4 +1,6 @@ """ +Problem 20: https://projecteuler.net/problem=20 + n! means n × (n − 1) × ... × 3 × 2 × 1 For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, @@ -9,8 +11,8 @@ Find the sum of the digits in the number 100! from math import factorial -def solution(n): - """Returns the sum of the digits in the number 100! +def solution(num: int = 100) -> int: + """Returns the sum of the digits in the factorial of num >>> solution(100) 648 >>> solution(50) @@ -26,7 +28,7 @@ def solution(n): >>> solution(1) 1 """ - return sum([int(x) for x in str(factorial(n))]) + return sum([int(x) for x in str(factorial(num))]) if __name__ == "__main__": diff --git a/project_euler/problem_20/sol3.py b/project_euler/problem_20/sol3.py index 13f9d7831..4f28ac5fc 100644 --- a/project_euler/problem_20/sol3.py +++ b/project_euler/problem_20/sol3.py @@ -1,4 +1,6 @@ """ +Problem 20: https://projecteuler.net/problem=20 + n! means n × (n − 1) × ... × 3 × 2 × 1 For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, @@ -9,8 +11,8 @@ Find the sum of the digits in the number 100! from math import factorial -def solution(n): - """Returns the sum of the digits in the number 100! +def solution(num: int = 100) -> int: + """Returns the sum of the digits in the factorial of num >>> solution(1000) 10539 >>> solution(200) @@ -32,7 +34,7 @@ def solution(n): >>> solution(0) 1 """ - return sum(map(int, str(factorial(n)))) + return sum(map(int, str(factorial(num)))) if __name__ == "__main__": diff --git a/project_euler/problem_20/sol4.py b/project_euler/problem_20/sol4.py index 4c597220f..b32ce309d 100644 --- a/project_euler/problem_20/sol4.py +++ b/project_euler/problem_20/sol4.py @@ -1,4 +1,6 @@ """ +Problem 20: https://projecteuler.net/problem=20 + n! means n × (n − 1) × ... × 3 × 2 × 1 For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, @@ -8,8 +10,8 @@ Find the sum of the digits in the number 100! """ -def solution(n): - """Returns the sum of the digits in the number 100! +def solution(num: int = 100) -> int: + """Returns the sum of the digits in the factorial of num >>> solution(100) 648 >>> solution(50) @@ -27,7 +29,7 @@ def solution(n): """ fact = 1 result = 0 - for i in range(1, n + 1): + for i in range(1, num + 1): fact *= i for j in str(fact):