Escreva uma função para checar se uma string é um IPv4 ou IPv6 válidos.
Os endereços IPv4 são canonicamente representados na notação decimal com pontos, que consiste em quatro números decimais, cada um variando de 0 a 255, separados por pontos ("."), Por exemplo, 172.16.254.1;
Além disso, zeros à esquerda no IPv4 são inválidos. Por exemplo, o endereço 172.16.254.01 é inválido.
Os endereços IPv6 são representados como oito grupos de quatro dígitos hexadecimais, cada grupo representando 16 bits. Os grupos são separados por dois pontos (":"). Por exemplo, o endereço 2001: 0db8: 85a3: 0000: 0000: 8a2e: 0370: 7334 é válido. Além disso, poderíamos omitir alguns zeros à esquerda entre quatro dígitos hexadecimais e alguns caracteres minúsculos no endereço para maiúsculas, portanto, 2001: db8: 85a3: 0: 0: 8A2E: 0370: 7334 também é um endereço IPv6 válido ( Omita os zeros à esquerda e use maiúsculas).
No entanto, não substituímos um grupo consecutivo de valor zero por um único grupo vazio usando dois dois pontos consecutivos (: :) para buscar a simplicidade. Por exemplo, 2001: 0db8: 85a3 :: 8A2E: 0370: 7334 é um endereço IPv6 inválido.
Nota: Você pode assumir que não há espaço extra ou caracteres especiais na sequência de entrada.
Input: "172.16.254.1"
Output: "IPv4"
Explanation: This is a valid IPv4 address, return "IPv4".
Input: "2001:0db8:85a3:0:0:8A2E:0370:7334"
Output: "IPv6"
Explanation: This is a valid IPv6 address, return "IPv6".
Input: "256.256.256.256"
Output: "Neither"
Explanation: This is neither a IPv4 address nor a IPv6 address.
Para participar você deverá fazer um fork deste repositório e submeter as alterações apenas para a sua cópia. Não faça um PR para este repositório, apenas envie um link para o avaliador que está em contato com você.
O que queremos:
- Python 3.
- Testes bem escritos e com uma boa cobertura.
- Legibilidade e manutenibilidade de código.
- Código em inglês.
- Tratamento de erros.
- Organização e instruções de como executar o projeto.