From bf3b99b63c55aaa5d370d08ff81a425ddec9c974 Mon Sep 17 00:00:00 2001 From: Alok Shukla Date: Tue, 13 Aug 2019 20:20:32 +0530 Subject: [PATCH 1/4] Solution for Euler 56 --- project_euler/problem_56/__init__.py | 0 project_euler/problem_56/sol1.py | 15 +++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 project_euler/problem_56/__init__.py create mode 100644 project_euler/problem_56/sol1.py diff --git a/project_euler/problem_56/__init__.py b/project_euler/problem_56/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/project_euler/problem_56/sol1.py b/project_euler/problem_56/sol1.py new file mode 100644 index 000000000000..1dfc67c5106f --- /dev/null +++ b/project_euler/problem_56/sol1.py @@ -0,0 +1,15 @@ +def maximum_digital_sum(a,b): + ''' + Considering natural numbers of the form, a**b, where a, b < 100, + what is the maximum digital sum? + :param a: + :param b: + :return: + ''' + # RETURN the MAXIMUM from the list of SUMs of the list of INT converted from STR of BASE raised to the POWER + return max([sum([int(x) for x in str(base**power)]) for base in range(a) for power in range(b)]) + +#Tests +print(maximum_digital_sum(10,10), "is 45") +print(maximum_digital_sum(100,100), "is 972") +print(maximum_digital_sum(100,200), "is 1872") From 2a6a25bddb145bd53a23e33d0959eeed51dd32c3 Mon Sep 17 00:00:00 2001 From: Alok Shukla Date: Tue, 13 Aug 2019 21:55:28 +0530 Subject: [PATCH 2/4] Adding Type and Doctest as per guideline --- project_euler/problem_56/sol1.py | 34 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/project_euler/problem_56/sol1.py b/project_euler/problem_56/sol1.py index 1dfc67c5106f..42bec9aad58f 100644 --- a/project_euler/problem_56/sol1.py +++ b/project_euler/problem_56/sol1.py @@ -1,15 +1,27 @@ -def maximum_digital_sum(a,b): - ''' - Considering natural numbers of the form, a**b, where a, b < 100, - what is the maximum digital sum? - :param a: - :param b: - :return: - ''' +import typing + + +def maximum_digital_sum(a,b) -> int: + """ + Considering natural numbers of the form, a**b, where a, b < 100, + what is the maximum digital sum? + :param a: + :param b: + :return: + >>> maximum_digital_sum(10,10) + 45 + + >>> maximum_digital_sum(100,100) + 972 + + >>> maximum_digital_sum(100,200) + 1872 + """ + # RETURN the MAXIMUM from the list of SUMs of the list of INT converted from STR of BASE raised to the POWER return max([sum([int(x) for x in str(base**power)]) for base in range(a) for power in range(b)]) #Tests -print(maximum_digital_sum(10,10), "is 45") -print(maximum_digital_sum(100,100), "is 972") -print(maximum_digital_sum(100,200), "is 1872") +if __name__ == "__main__": + import doctest + doctest.testmod() From d6fb746a758659aff3d41bcb50ae3b92a37c5dc9 Mon Sep 17 00:00:00 2001 From: Alok Shukla Date: Tue, 13 Aug 2019 22:07:54 +0530 Subject: [PATCH 3/4] removing unused import --- project_euler/problem_56/sol1.py | 1 - 1 file changed, 1 deletion(-) diff --git a/project_euler/problem_56/sol1.py b/project_euler/problem_56/sol1.py index 42bec9aad58f..f5cd61ea04b1 100644 --- a/project_euler/problem_56/sol1.py +++ b/project_euler/problem_56/sol1.py @@ -1,4 +1,3 @@ -import typing def maximum_digital_sum(a,b) -> int: From 38eff76ca8db46d132a2cf246fd0c918005dc17b Mon Sep 17 00:00:00 2001 From: Alok Shukla Date: Tue, 13 Aug 2019 22:11:23 +0530 Subject: [PATCH 4/4] correcting the way type check works --- project_euler/problem_56/sol1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project_euler/problem_56/sol1.py b/project_euler/problem_56/sol1.py index f5cd61ea04b1..194a7a37af43 100644 --- a/project_euler/problem_56/sol1.py +++ b/project_euler/problem_56/sol1.py @@ -1,6 +1,6 @@ -def maximum_digital_sum(a,b) -> int: +def maximum_digital_sum(a: int, b: int) -> int: """ Considering natural numbers of the form, a**b, where a, b < 100, what is the maximum digital sum?