Add type hints and default args for problem 20 (#2962)

- Improved variable names
- Added type hints
- Added default argument values for validate_solutions script
This commit is contained in:
Dhruv 2020-10-07 15:29:55 +05:30 committed by GitHub
parent e41d04112f
commit 11a5afd8a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 16 deletions

View File

@ -1,4 +1,6 @@
""" """
Problem 20: https://projecteuler.net/problem=20
n! means n × (n 1) × ... × 3 × 2 × 1 n! means n × (n 1) × ... × 3 × 2 × 1
For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, 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 fact = 1
for i in range(1, n + 1): for i in range(1, num + 1):
fact *= i fact *= i
return fact return fact
def split_and_add(number): def split_and_add(number: int) -> int:
"""Split number digits and add them.""" """Split number digits and add them."""
sum_of_digits = 0 sum_of_digits = 0
while number > 0: while number > 0:
@ -25,8 +28,8 @@ def split_and_add(number):
return sum_of_digits return sum_of_digits
def solution(n): def solution(num: int = 100) -> int:
"""Returns the sum of the digits in the number 100! """Returns the sum of the digits in the factorial of num
>>> solution(100) >>> solution(100)
648 648
>>> solution(50) >>> solution(50)
@ -42,8 +45,8 @@ def solution(n):
>>> solution(1) >>> solution(1)
1 1
""" """
f = factorial(n) nfact = factorial(num)
result = split_and_add(f) result = split_and_add(nfact)
return result return result

View File

@ -1,4 +1,6 @@
""" """
Problem 20: https://projecteuler.net/problem=20
n! means n × (n 1) × ... × 3 × 2 × 1 n! means n × (n 1) × ... × 3 × 2 × 1
For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, 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 from math import factorial
def solution(n): def solution(num: int = 100) -> int:
"""Returns the sum of the digits in the number 100! """Returns the sum of the digits in the factorial of num
>>> solution(100) >>> solution(100)
648 648
>>> solution(50) >>> solution(50)
@ -26,7 +28,7 @@ def solution(n):
>>> solution(1) >>> solution(1)
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__": if __name__ == "__main__":

View File

@ -1,4 +1,6 @@
""" """
Problem 20: https://projecteuler.net/problem=20
n! means n × (n 1) × ... × 3 × 2 × 1 n! means n × (n 1) × ... × 3 × 2 × 1
For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, 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 from math import factorial
def solution(n): def solution(num: int = 100) -> int:
"""Returns the sum of the digits in the number 100! """Returns the sum of the digits in the factorial of num
>>> solution(1000) >>> solution(1000)
10539 10539
>>> solution(200) >>> solution(200)
@ -32,7 +34,7 @@ def solution(n):
>>> solution(0) >>> solution(0)
1 1
""" """
return sum(map(int, str(factorial(n)))) return sum(map(int, str(factorial(num))))
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -1,4 +1,6 @@
""" """
Problem 20: https://projecteuler.net/problem=20
n! means n × (n 1) × ... × 3 × 2 × 1 n! means n × (n 1) × ... × 3 × 2 × 1
For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, 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): def solution(num: int = 100) -> int:
"""Returns the sum of the digits in the number 100! """Returns the sum of the digits in the factorial of num
>>> solution(100) >>> solution(100)
648 648
>>> solution(50) >>> solution(50)
@ -27,7 +29,7 @@ def solution(n):
""" """
fact = 1 fact = 1
result = 0 result = 0
for i in range(1, n + 1): for i in range(1, num + 1):
fact *= i fact *= i
for j in str(fact): for j in str(fact):