Votre outil d'analyse de réseau est particulièrement difficile à saisir et se bloque immédiatement si vous lui fournissez une adresse IPv4 qui contient des caractères incorrects ou n'est pas correctement formatée.
Une adresse IPv4 est une adresse numérique 32 bits écrite en quatre nombres séparés par des points. Chaque nombre peut être compris entre zéro et 255 .
Nous devons écrire un outil pour pré-valider l'entrée pour éviter ces plantages, et notre outil spécifique est difficile: un format valide ressemblera à l' a.b.c.d
endroit où a, b, c et d:
- Peut être un
0
ou un nombre naturel sans zéros non significatifs . - Doit être compris entre 0 et 255 (inclus).
- Devrait pas contenir des symboles spéciaux comme
+
,-
,,
et d' autres. - Doit être décimal (base
10
)
Entrée : une chaîne
Sortie : valeur Truthy ou Falsey (valeurs arbitraires également acceptées)
Cas de test :
Input | Output | Reason
| |
- 1.160.10.240 | true |
- 192.001.32.47 | false | (leading zeros present)
- 1.2.3. | false | (only three digits)
- 1.2.3 | false | (only three digits)
- 0.00.10.255 | false | (leading zeros present)
- 1.2.$.4 | false | (only three digits and a special symbol present)
- 255.160.0.34 | true |
- .1.1.1 | false | (only three digits)
- 1..1.1.1 | false | (more than three periods)
- 1.1.1.-0 | false | (special symbol present)
- .1.1.+1 | false | (special symbol present)
- 1 1 1 1 | false | (no periods)
- 1 | false | (only one digit)
- 10.300.4.0 | false | (value over 255)
- 10.4F.10.99 | false | (invalid characters)
- fruit loops | false | (umm...)
- 1.2.3.4.5 | false | (too many periods/numbers)
- 0.0.0.0 | true |
- 0.0 0.0. | false | (periods misplaced)
- 1.23..4 | false | (a typo of 1.2.3.4)
- 1:1:1:1:1:1:1:1| false | (an IPv6 address, not IPv4)
Il s'agit de code-golf , donc le moins d'octets gagnera!
Remarque pour les utilisateurs - si vous souhaitez ajouter d'autres cas de test, vous êtes les bienvenus (en suggérant une modification). Mais assurez-vous que les cas de test ne se répètent pas! Merci
1.1.1.1.1
,1.1.1.1.
,.1.1.1
,1..1.1
,1..1.1.1
,1.1.1.0
,1.1.1.-0
,1.1.1.+1
,1.1.1.1E1
,1.1.1.256
,1.1.1.0x1
,255.255.255.255
,0.0.0.0
,'or 1=1--
,<empty string>
,1 1 1 1
,1,1,1,1
.