diff --git a/maths/check_polygon.py b/maths/check_polygon.py index 0e7711973..1e8dce718 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__":