diff --git a/DIRECTORY.md b/DIRECTORY.md index c197dd88032e..d2f458638a35 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -513,9 +513,10 @@ * [Runge Kutta](https://github.com/TheAlgorithms/Python/blob/master/maths/runge_kutta.py) * [Segmented Sieve](https://github.com/TheAlgorithms/Python/blob/master/maths/segmented_sieve.py) * Series - * [Arithmetic Mean](https://github.com/TheAlgorithms/Python/blob/master/maths/series/arithmetic_mean.py) - * [Geometric Mean](https://github.com/TheAlgorithms/Python/blob/master/maths/series/geometric_mean.py) + * [Arithmetic](https://github.com/TheAlgorithms/Python/blob/master/maths/series/arithmetic.py) + * [Geometric](https://github.com/TheAlgorithms/Python/blob/master/maths/series/geometric.py) * [Geometric Series](https://github.com/TheAlgorithms/Python/blob/master/maths/series/geometric_series.py) + * [Harmonic](https://github.com/TheAlgorithms/Python/blob/master/maths/series/harmonic.py) * [Harmonic Series](https://github.com/TheAlgorithms/Python/blob/master/maths/series/harmonic_series.py) * [P Series](https://github.com/TheAlgorithms/Python/blob/master/maths/series/p_series.py) * [Sieve Of Eratosthenes](https://github.com/TheAlgorithms/Python/blob/master/maths/sieve_of_eratosthenes.py) @@ -933,6 +934,7 @@ * [Indian Phone Validator](https://github.com/TheAlgorithms/Python/blob/master/strings/indian_phone_validator.py) * [Is Palindrome](https://github.com/TheAlgorithms/Python/blob/master/strings/is_palindrome.py) * [Jaro Winkler](https://github.com/TheAlgorithms/Python/blob/master/strings/jaro_winkler.py) + * [Join](https://github.com/TheAlgorithms/Python/blob/master/strings/join.py) * [Knuth Morris Pratt](https://github.com/TheAlgorithms/Python/blob/master/strings/knuth_morris_pratt.py) * [Levenshtein Distance](https://github.com/TheAlgorithms/Python/blob/master/strings/levenshtein_distance.py) * [Lower](https://github.com/TheAlgorithms/Python/blob/master/strings/lower.py) @@ -967,6 +969,7 @@ * [Fetch Jobs](https://github.com/TheAlgorithms/Python/blob/master/web_programming/fetch_jobs.py) * [Get Imdb Top 250 Movies Csv](https://github.com/TheAlgorithms/Python/blob/master/web_programming/get_imdb_top_250_movies_csv.py) * [Get Imdbtop](https://github.com/TheAlgorithms/Python/blob/master/web_programming/get_imdbtop.py) + * [Giphy](https://github.com/TheAlgorithms/Python/blob/master/web_programming/giphy.py) * [Instagram Crawler](https://github.com/TheAlgorithms/Python/blob/master/web_programming/instagram_crawler.py) * [Instagram Pic](https://github.com/TheAlgorithms/Python/blob/master/web_programming/instagram_pic.py) * [Instagram Video](https://github.com/TheAlgorithms/Python/blob/master/web_programming/instagram_video.py) diff --git a/maths/check_polygon.py b/maths/check_polygon.py index 0e771197331f..1e8dce7183ad 100644 --- a/maths/check_polygon.py +++ b/maths/check_polygon.py @@ -1,7 +1,7 @@ -from typing import List +from __future__ import annotations -def check_polygon(nums: List) -> bool: +def check_polygon(nums: list[float]) -> bool: """ Takes list of possible side lengths and determines whether a two-dimensional polygon with such side lengths can exist. @@ -14,15 +14,28 @@ def check_polygon(nums: List) -> bool: True >>> check_polygon([3, 7, 13, 2]) False + >>> check_polygon([1, 4.3, 5.2, 12.2]) + False + >>> nums = [3, 7, 13, 2] + >>> _ = check_polygon(nums) # Run function, do not show answer in output + >>> nums # Check numbers are not reordered + [3, 7, 13, 2] >>> check_polygon([]) Traceback (most recent call last): ... - ValueError: List is invalid + ValueError: Monogons and Digons are not polygons in the Euclidean space + >>> check_polygon([-2, 5, 6]) + Traceback (most recent call last): + ... + ValueError: All values must be greater than 0 """ - if not nums: - raise ValueError("List is invalid") - nums.sort() - return nums.pop() < sum(nums) + if len(nums) < 2: + raise ValueError("Monogons and Digons are not polygons in the Euclidean space") + if any(i <= 0 for i in nums): + raise ValueError("All values must be greater than 0") + copy_nums = nums.copy() + copy_nums.sort() + return copy_nums[-1] < sum(copy_nums[:-1]) if __name__ == "__main__":