From f92a8ff1f704ebad6f794b0737e19889a7510f09 Mon Sep 17 00:00:00 2001 From: jelambrar96 Date: Fri, 31 May 2024 01:48:08 -0500 Subject: [PATCH 1/3] factorail using reduce --- maths/factorial.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/maths/factorial.py b/maths/factorial.py index aaf90f384bb9..89daabcb1fb8 100644 --- a/maths/factorial.py +++ b/maths/factorial.py @@ -2,6 +2,8 @@ Factorial of a positive integer -- https://en.wikipedia.org/wiki/Factorial """ +from functools import reduce + def factorial(number: int) -> int: """ @@ -29,9 +31,8 @@ def factorial(number: int) -> int: raise ValueError("factorial() only accepts integral values") if number < 0: raise ValueError("factorial() not defined for negative values") - value = 1 - for i in range(1, number + 1): - value *= i + if number in {0, 1}: return 1 + value = reduce(lambda x , y: x * y, range(1, number + 1)) return value From 602c1d69747b875b2765ac37c214e5544559d957 Mon Sep 17 00:00:00 2001 From: jelambrar96 Date: Fri, 31 May 2024 02:00:11 -0500 Subject: [PATCH 2/3] factorail using reduce --- maths/factorial.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/maths/factorial.py b/maths/factorial.py index 89daabcb1fb8..c44c4075e519 100644 --- a/maths/factorial.py +++ b/maths/factorial.py @@ -31,8 +31,7 @@ def factorial(number: int) -> int: raise ValueError("factorial() only accepts integral values") if number < 0: raise ValueError("factorial() not defined for negative values") - if number in {0, 1}: return 1 - value = reduce(lambda x , y: x * y, range(1, number + 1)) + value = 1 if number in {0, 1} else reduce(lambda x , y: x * y, range(1, number + 1)) return value From a3bf55215a0e2ef49cef1554c82b044052da4f63 Mon Sep 17 00:00:00 2001 From: jelambrar96 Date: Fri, 31 May 2024 12:25:13 -0500 Subject: [PATCH 3/3] fix ruff format error --- maths/factorial.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/maths/factorial.py b/maths/factorial.py index c44c4075e519..d74973725dc0 100644 --- a/maths/factorial.py +++ b/maths/factorial.py @@ -3,6 +3,7 @@ """ from functools import reduce +from operator import mul def factorial(number: int) -> int: @@ -31,7 +32,7 @@ def factorial(number: int) -> int: raise ValueError("factorial() only accepts integral values") if number < 0: raise ValueError("factorial() not defined for negative values") - value = 1 if number in {0, 1} else reduce(lambda x , y: x * y, range(1, number + 1)) + value = 1 if number in {0, 1} else reduce(mul, range(1, number + 1)) return value