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")
aW1wb3J0IGlwYWRkcmVzcwoKUFJJVkFURV9ORVRXT1JLUyA9IFsKCWlwYWRkcmVzcy5pcF9uZXR3b3JrKCIxMC4wLjAuMC84IiksCiAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygiMTcyLjE2LjAuMC8xMiIpLAogICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoIjE5Mi4xNjguMC4wLzE2IiksCl0KCmRlZiBmaWx0ZXJfcHJpdmF0ZV9pcHMoaXBzKToKCXJlc3VsdCA9IFtdIAoJZm9yIGlwIGluIGlwczoKCQl0cnk6CgkJCWFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcyhpcCkKCQlleGNlcHQgVmFsdWVFcnJvcjoKCQkJY29udGludWUKCQlpZiBhbnkoYWRkciBpbiBuZXQgZm9yIG5ldCBpbiBQUklWQVRFX05FVFdPUktTKToKCQkJcmVzdWx0LmFwcGVuZChpcCkKCXJldHVybiByZXN1bHQKCQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHRlc3RfZGF0YSA9IFsKICAgICAgICAiMTAuMC4wLjEiLCAiMTcyLjE2LjUuNCIsICIxNzIuMzIuMC4xIiwgICMgMTcyLjMyIGlzIE5PVCBwcml2YXRlCiAgICAgICAgIjE5Mi4xNjguMS4xIiwgIjguOC44LjgiLCAibm90LWFuLWlwIiwgIiIsCiAgICBdCiAgICByZXN1bHQgPSBmaWx0ZXJfcHJpdmF0ZV9pcHModGVzdF9kYXRhKQogICAgcHJpbnQocmVzdWx0KQogICAgYXNzZXJ0IHJlc3VsdCA9PSBbIjEwLjAuMC4xIiwgIjE3Mi4xNi41LjQiLCAiMTkyLjE2OC4xLjEiXQogICAgYXNzZXJ0IGZpbHRlcl9wcml2YXRlX2lwcyhbXSkgPT0gW10KICAgIHByaW50KCJDaGFsbGVuZ2UgNCBPSyIp
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")