mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-30 16:31:08 +00:00
44 lines
1.0 KiB
Python
44 lines
1.0 KiB
Python
|
"""
|
||
|
A triangular number or triangle number counts objects arranged in an
|
||
|
equilateral triangle. This module provides a function to generate n'th
|
||
|
triangular number.
|
||
|
|
||
|
For more information about triangular numbers, refer to:
|
||
|
https://en.wikipedia.org/wiki/Triangular_number
|
||
|
"""
|
||
|
|
||
|
|
||
|
def triangular_number(position: int) -> int:
|
||
|
"""
|
||
|
Generate the triangular number at the specified position.
|
||
|
|
||
|
Args:
|
||
|
position (int): The position of the triangular number to generate.
|
||
|
|
||
|
Returns:
|
||
|
int: The triangular number at the specified position.
|
||
|
|
||
|
Raises:
|
||
|
ValueError: If `position` is negative.
|
||
|
|
||
|
Examples:
|
||
|
>>> triangular_number(1)
|
||
|
1
|
||
|
>>> triangular_number(3)
|
||
|
6
|
||
|
>>> triangular_number(-1)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValueError: param `position` must be non-negative
|
||
|
"""
|
||
|
if position < 0:
|
||
|
raise ValueError("param `position` must be non-negative")
|
||
|
|
||
|
return position * (position + 1) // 2
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
import doctest
|
||
|
|
||
|
doctest.testmod()
|