import ipaddress
PRIVATE_NETWORKS = [
ipaddress.ip_network("10.0.0.0/8"),
ipaddress.ip_network("172.16.0.0/12"),
ipaddress.ip_network("192.168.0.0/16"),
]
def filter_private_ips(ips):
result = []
for ip in ips:
try:
addr = ipaddress.ip_address(ip)
except ValueError:
continue
if any(addr in net for net in PRIVATE_NETWORKS):
result.append(ip)
return result
if __name__ == "__main__":
test_data = [
"10.0.0.1", "172.16.5.4", "172.32.0.1", # 172.32 is NOT private
"192.168.1.1", "8.8.8.8", "not-an-ip", "",
]
result = filter_private_ips(test_data)
print(result)
assert result == ["10.0.0.1", "172.16.5.4", "192.168.1.1"]
assert filter_private_ips([]) == []
print("Challenge 4 OK")
aW1wb3J0IGlwYWRkcmVzcwoKUFJJVkFURV9ORVRXT1JLUyA9IFsKCWlwYWRkcmVzcy5pcF9uZXR3b3JrKCIxMC4wLjAuMC84IiksCiAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygiMTcyLjE2LjAuMC8xMiIpLAogICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoIjE5Mi4xNjguMC4wLzE2IiksCl0KCmRlZiBmaWx0ZXJfcHJpdmF0ZV9pcHMoaXBzKToKCXJlc3VsdCA9IFtdCglmb3IgaXAgaW4gaXBzOgoJCXRyeToKCQkJYWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKGlwKQoJCWV4Y2VwdCBWYWx1ZUVycm9yOgoJCQljb250aW51ZQoJCWlmIGFueShhZGRyIGluIG5ldCBmb3IgbmV0IGluIFBSSVZBVEVfTkVUV09SS1MpOgoJCQlyZXN1bHQuYXBwZW5kKGlwKQoJcmV0dXJuIHJlc3VsdAoJCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgdGVzdF9kYXRhID0gWwogICAgICAgICIxMC4wLjAuMSIsICIxNzIuMTYuNS40IiwgIjE3Mi4zMi4wLjEiLCAgIyAxNzIuMzIgaXMgTk9UIHByaXZhdGUKICAgICAgICAiMTkyLjE2OC4xLjEiLCAiOC44LjguOCIsICJub3QtYW4taXAiLCAiIiwKICAgIF0KICAgIHJlc3VsdCA9IGZpbHRlcl9wcml2YXRlX2lwcyh0ZXN0X2RhdGEpCiAgICBwcmludChyZXN1bHQpCiAgICBhc3NlcnQgcmVzdWx0ID09IFsiMTAuMC4wLjEiLCAiMTcyLjE2LjUuNCIsICIxOTIuMTY4LjEuMSJdCiAgICBhc3NlcnQgZmlsdGVyX3ByaXZhdGVfaXBzKFtdKSA9PSBbXQogICAgcHJpbnQoIkNoYWxsZW5nZSA0IE9LIik=
aWYgX19uYW1lX18gPT0gJnF1b3Q7X19tYWluX18mcXVvdDs6CiAgICB0ZXN0X2RhdGEgPSBbMSwgMiwgMywgMiwgNCwgMSwgMSwgNV0KICAgIHJlc3VsdCA9IGZpbmRfZHVwbGljYXRlcyh0ZXN0X2RhdGEpCiAgICBwcmludChyZXN1bHQpCiAgICBhc3NlcnQgcmVzdWx0ID09IFsyLCAxXQogICAgYXNzZXJ0IGZpbmRfZHVwbGljYXRlcyhbXSkgPT0gW10KICAgIGFzc2VydCBmaW5kX2R1cGxpY2F0ZXMoWzEsIDIsIDNdKSA9PSBbXQogICAgcHJpbnQoJnF1b3Q7Q2hhbGxlbmdlIDIgT0smcXVvdDspCg==
if __name__ == "__main__":
test_data = [1, 2, 3, 2, 4, 1, 1, 5]
result = find_duplicates(test_data)
print(result)
assert result == [2, 1]
assert find_duplicates([]) == []
assert find_duplicates([1, 2, 3]) == []
print("Challenge 2 OK")