From fb9289819419bdbb56cfe4355e8097300d59dde3 Mon Sep 17 00:00:00 2001 From: r0sa2 Date: Sat, 20 May 2023 14:23:07 +0530 Subject: [PATCH 1/2] Added nth_sgonal_num.py --- maths/nth_sgonal_num.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 maths/nth_sgonal_num.py diff --git a/maths/nth_sgonal_num.py b/maths/nth_sgonal_num.py new file mode 100644 index 000000000000..810706c57533 --- /dev/null +++ b/maths/nth_sgonal_num.py @@ -0,0 +1,24 @@ +def nth_sgonal_num(num: int, sides: int) -> int: + """ + Returns the `num`th `sides`-gonal number. It is assumed that `num` >= 0 and + `sides` >= 3 (see for reference https://en.wikipedia.org/wiki/Polygonal_number). + + >>> nth_sgonal_num(0, 3) + 0 + >>> nth_sgonal_num(3, 3) + 6 + >>> nth_sgonal_num(5, 4) + 25 + >>> nth_sgonal_num(2, 5) + 5 + """ + if num < 0 or sides < 3: + raise ValueError("Invalid input: num must be >= 0 and sides must be >= 3.") + + return ((sides - 2) * (num**2) - (sides - 4) * num) // 2 + + +if __name__ == "__main__": + import doctest + + doctest.testmod() From 28f0829d2437cb07bed41319b951991a6d67f020 Mon Sep 17 00:00:00 2001 From: Tianyi Zheng Date: Thu, 7 Sep 2023 03:46:11 -0400 Subject: [PATCH 2/2] Update and rename nth_sgonal_num.py to polygonal_numbers.py --- maths/nth_sgonal_num.py | 24 ------------------------ maths/polygonal_numbers.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 24 deletions(-) delete mode 100644 maths/nth_sgonal_num.py create mode 100644 maths/polygonal_numbers.py diff --git a/maths/nth_sgonal_num.py b/maths/nth_sgonal_num.py deleted file mode 100644 index 810706c57533..000000000000 --- a/maths/nth_sgonal_num.py +++ /dev/null @@ -1,24 +0,0 @@ -def nth_sgonal_num(num: int, sides: int) -> int: - """ - Returns the `num`th `sides`-gonal number. It is assumed that `num` >= 0 and - `sides` >= 3 (see for reference https://en.wikipedia.org/wiki/Polygonal_number). - - >>> nth_sgonal_num(0, 3) - 0 - >>> nth_sgonal_num(3, 3) - 6 - >>> nth_sgonal_num(5, 4) - 25 - >>> nth_sgonal_num(2, 5) - 5 - """ - if num < 0 or sides < 3: - raise ValueError("Invalid input: num must be >= 0 and sides must be >= 3.") - - return ((sides - 2) * (num**2) - (sides - 4) * num) // 2 - - -if __name__ == "__main__": - import doctest - - doctest.testmod() diff --git a/maths/polygonal_numbers.py b/maths/polygonal_numbers.py new file mode 100644 index 000000000000..7a7dc91acb26 --- /dev/null +++ b/maths/polygonal_numbers.py @@ -0,0 +1,32 @@ +def polygonal_num(num: int, sides: int) -> int: + """ + Returns the `num`th `sides`-gonal number. It is assumed that `num` >= 0 and + `sides` >= 3 (see for reference https://en.wikipedia.org/wiki/Polygonal_number). + + >>> polygonal_num(0, 3) + 0 + >>> polygonal_num(3, 3) + 6 + >>> polygonal_num(5, 4) + 25 + >>> polygonal_num(2, 5) + 5 + >>> polygonal_num(-1, 0) + Traceback (most recent call last): + ... + ValueError: Invalid input: num must be >= 0 and sides must be >= 3. + >>> polygonal_num(0, 2) + Traceback (most recent call last): + ... + ValueError: Invalid input: num must be >= 0 and sides must be >= 3. + """ + if num < 0 or sides < 3: + raise ValueError("Invalid input: num must be >= 0 and sides must be >= 3.") + + return ((sides - 2) * num**2 - (sides - 4) * num) // 2 + + +if __name__ == "__main__": + import doctest + + doctest.testmod()