From 799fd61ac867dce7eee23586e3773aa209963cad Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Tue, 24 Aug 2021 18:51:09 +0200 Subject: [PATCH 1/3] Update and rename check_valid_ip_address.py to is_ip_v4_address_valid.py New test cases that the algorithm must detect: * [ ] an octet much bigger than 255 * [ ] an octet is negative * [ ] number of octets is less than 4 * [ ] number of octets is greater than 4 * [ ] an octet is a letter --- maths/check_valid_ip_address.py | 46 ------------------------------ maths/is_ip_v4_address_valid.py | 50 +++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 46 deletions(-) delete mode 100644 maths/check_valid_ip_address.py create mode 100644 maths/is_ip_v4_address_valid.py diff --git a/maths/check_valid_ip_address.py b/maths/check_valid_ip_address.py deleted file mode 100644 index 6e8d35ebc44c..000000000000 --- a/maths/check_valid_ip_address.py +++ /dev/null @@ -1,46 +0,0 @@ -""" -Checking valid Ip Address. -A valid IP address must be in the form of A.B.C.D, -where A,B,C and D are numbers from 0-254 -for example: 192.168.23.1, 172.254.254.254 are valid IP address - 192.168.255.0, 255.192.3.121 are Invalid IP address -""" - - -def check_valid_ip(ip: str) -> bool: - """ - print "Valid IP address" If IP is valid. - or - print "Invalid IP address" If IP is Invalid. - - >>> check_valid_ip("192.168.0.23") - True - - >>> check_valid_ip("192.255.15.8") - False - - >>> check_valid_ip("172.100.0.8") - True - - >>> check_valid_ip("254.255.0.255") - False - """ - ip1 = ip.replace(".", " ") - list1 = [int(i) for i in ip1.split() if i.isdigit()] - count = 0 - for i in list1: - if i > 254: - count += 1 - break - if count: - return False - return True - - -if __name__ == "__main__": - ip = input() - output = check_valid_ip(ip) - if output is True: - print(f"{ip} is a Valid IP address") - else: - print(f"{ip} is an Invalid IP address") diff --git a/maths/is_ip_v4_address_valid.py b/maths/is_ip_v4_address_valid.py new file mode 100644 index 000000000000..2a42fab5d081 --- /dev/null +++ b/maths/is_ip_v4_address_valid.py @@ -0,0 +1,50 @@ +""" +Is IP v4 address valid? +A valid IP address must be four octets in the form of A.B.C.D, +where A,B,C and D are numbers from 0-254 +for example: 192.168.23.1, 172.254.254.254 are valid IP address + 192.168.255.0, 255.192.3.121 are invalid IP address +""" + + +def is_ip_v4_address_valid(ip_v4_address: str) -> bool: + """ + print "Valid IP address" If IP is valid. + or + print "Invalid IP address" If IP is invalid. + + >>> is_ip_v4_address_valid("192.168.0.23") + True + + >>> is_ip_v4_address_valid("192.255.15.8") + False + + >>> is_ip_v4_address_valid("172.100.0.8") + True + + >>> is_ip_v4_address_valid("254.255.0.255") + False + + >>> is_ip_v4_address_valid("1.2.33333333.4") + False + + >>> is_ip_v4_address_valid("1.2.-3.4") + False + + >>> is_ip_v4_address_valid("1.2.3") + False + + >>> is_ip_v4_address_valid("1.2.3.4.5") + False + + >>> is_ip_v4_address_valid("1.2.A.4") + False + """ + octets = [int(i) for i in ip_v4_address.split(".") if i.isdigit()] + return len(octets) == 4 and all(0 <= int(octet) <= 254 for octet in octets) + + +if __name__ == "__main__": + ip = input().strip() + valid_or_invalid = "valid" if is_ip_v4_address_valid(ip) else "invalid" + print(f"{ip} is a {valid_or_invalid} IP v4 address.") From e0bb2f112d53daac1d86aae3c00f3c3cb8f2af68 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Tue, 24 Aug 2021 16:51:53 +0000 Subject: [PATCH 2/3] updating DIRECTORY.md --- DIRECTORY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index 41485f6f0ca4..5b91cda98b1a 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -424,7 +424,6 @@ * [Binomial Distribution](https://github.com/TheAlgorithms/Python/blob/master/maths/binomial_distribution.py) * [Bisection](https://github.com/TheAlgorithms/Python/blob/master/maths/bisection.py) * [Ceil](https://github.com/TheAlgorithms/Python/blob/master/maths/ceil.py) - * [Check Valid Ip Address](https://github.com/TheAlgorithms/Python/blob/master/maths/check_valid_ip_address.py) * [Chudnovsky Algorithm](https://github.com/TheAlgorithms/Python/blob/master/maths/chudnovsky_algorithm.py) * [Collatz Sequence](https://github.com/TheAlgorithms/Python/blob/master/maths/collatz_sequence.py) * [Combinations](https://github.com/TheAlgorithms/Python/blob/master/maths/combinations.py) @@ -454,6 +453,7 @@ * [Greedy Coin Change](https://github.com/TheAlgorithms/Python/blob/master/maths/greedy_coin_change.py) * [Hardy Ramanujanalgo](https://github.com/TheAlgorithms/Python/blob/master/maths/hardy_ramanujanalgo.py) * [Integration By Simpson Approx](https://github.com/TheAlgorithms/Python/blob/master/maths/integration_by_simpson_approx.py) + * [Is Ip V4 Address Valid](https://github.com/TheAlgorithms/Python/blob/master/maths/is_ip_v4_address_valid.py) * [Is Square Free](https://github.com/TheAlgorithms/Python/blob/master/maths/is_square_free.py) * [Jaccard Similarity](https://github.com/TheAlgorithms/Python/blob/master/maths/jaccard_similarity.py) * [Kadanes](https://github.com/TheAlgorithms/Python/blob/master/maths/kadanes.py) From 43a7327ad291a0b4c1fdc126b4fa3df6169a0381 Mon Sep 17 00:00:00 2001 From: John Law Date: Thu, 23 Sep 2021 01:59:39 +0800 Subject: [PATCH 3/3] Add two more tests to is_ip_v4_address_valid.py --- maths/is_ip_v4_address_valid.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maths/is_ip_v4_address_valid.py b/maths/is_ip_v4_address_valid.py index 2a42fab5d081..0ae8e021ead1 100644 --- a/maths/is_ip_v4_address_valid.py +++ b/maths/is_ip_v4_address_valid.py @@ -39,6 +39,12 @@ def is_ip_v4_address_valid(ip_v4_address: str) -> bool: >>> is_ip_v4_address_valid("1.2.A.4") False + + >>> is_ip_v4_address_valid("0.0.0.0") + True + + >>> is_ip_v4_address_valid("1.2.3.") + False """ octets = [int(i) for i in ip_v4_address.split(".") if i.isdigit()] return len(octets) == 4 and all(0 <= int(octet) <= 254 for octet in octets)