fork(1) download
  1. import ipaddress
  2.  
  3. PRIVATE_NETWORKS = [
  4. ipaddress.ip_network("10.0.0.0/8"),
  5. ipaddress.ip_network("172.16.0.0/12"),
  6. ipaddress.ip_network("192.168.0.0/16"),
  7. ]
  8.  
  9. def filter_private_ips(ips):
  10. result = []
  11. for ip in ips:
  12. try:
  13. addr = ipaddress.ip_address(ip)
  14. except ValueError:
  15. continue
  16. if any(addr in net for net in PRIVATE_NETWORKS):
  17. result.append(ip)
  18. return result
  19.  
  20.  
  21. if __name__ == "__main__":
  22. test_data = [
  23. "10.0.0.1", "172.16.5.4", "172.32.0.1", # 172.32 is NOT private
  24. "192.168.1.1", "8.8.8.8", "not-an-ip", "",
  25. ]
  26. result = filter_private_ips(test_data)
  27. print(result)
  28. assert result == ["10.0.0.1", "172.16.5.4", "192.168.1.1"]
  29. assert filter_private_ips([]) == []
  30. print("Challenge 4 OK")
Success #stdin #stdout 0.08s 15096KB
stdin
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")
stdout
['10.0.0.1', '172.16.5.4', '192.168.1.1']
Challenge 4 OK