Parfois, lorsque je tape une adresse IPv4, tous les chiffres sont corrects, mais j'oublie de taper un ou plusieurs points. J'aimerais avoir un programme (ou une fonction) qui prend mon adresse IPv4 erronée et génère tous les emplacements valides possibles des périodes manquantes.
Contribution
L'entrée sera toujours une chaîne qui transformera une adresse IPv4 valide (voir les détails ci-dessous). Il aura toujours été transformé uniquement par l'élimination d'un ou plusieurs caractères d'époque.
Votre soumission n'a pas besoin de gérer des entrées en dehors de ce format.
Sortie
Une collection ou une liste, sans ordre ni format particulier, de chaînes représentant toutes les adresses IPv4 valides pouvant être créées à partir de l'entrée en insérant des caractères de période dans l'entrée.
- La sortie peut être une liste native de la langue ou un autre type de collection ordonné ou non.
- Alternativement, il peut s'agir d'une séquence de chaîne d'adresse IPv4 délimitée de manière claire.
- Si vous utilisez un délimiteur à un seul caractère pour délimiter votre chaîne, les points et les chiffres ne sont pas autorisés comme délimiteur à un seul caractère. Je me rends compte que, contrairement aux nombres, les points comme délimiteurs ne sont pas ambigus (car une période sur quatre serait nécessairement un délimiteur), mais par souci de lisibilité, je le refuse.
Format d'adresse IPv4
Bien que les adresses IPv4 ne soient en réalité qu'une séquence de quatre octets binaires, ce défi utilise un format décimal en pointillés restreint.
- Une adresse IPv4 est composée de quatre valeurs décimales séparées par trois points.
- Chacune des quatre valeurs sont dans la plage
0
à255
inclusivement. - Les zéros non significatifs ne sont autorisés dans aucune valeur numérique. (Autonome un caractère
0
est permis, tout autre numéro commençant par un zéro n'est pas:052
,00
, etc.)
Cas de test
L'entrée est sur la première ligne, la sortie sur la deuxième ligne (ici, structurée comme une liste de chaînes de caractères citées, séparées par des virgules, séparées par des virgules, entourées de [
]
, mais vous pouvez utiliser n'importe quel format ou structure raisonnable, comme spécifié ci-dessus). Certains exemples comportent des notes sur une troisième ligne pour mettre en évidence l'application d'une règle particulière.
192.168.1234
["192.168.1.234", "192.168.12.34", "192.168.123.4"]
192.1681234
["192.16.81.234", "192.168.1.234", "192.168.12.34", "192.168.123.4"]
(Note: 192.1681.2.34 (etc.) is illegal because 1681 is greater than 255)
1921681.234
["19.216.81.234", "192.16.81.234", "192.168.1.234"]
1921681234
["19.216.81.234", "192.16.81.234", "192.168.1.234", "192.168.12.34", "192.168.123.4"]
192.168.1204
["192.168.1.204", "192.168.120.4"]
(Note: 192.168.12.04 is illegal because of leading zero)
192.168.123
["1.92.168.123", "19.2.168.123", "192.1.68.123", "192.16.8.123", "192.168.1.23", "192.168.12.3"]
192.168.256
["192.168.2.56", "192.168.25.6"]
(Note: Any combination that would leave 256 intact is illegal)
120345
["1.20.3.45", "1.20.34.5", "1.203.4.5", "12.0.3.45", "12.0.34.5", "120.3.4.5"]
(Note: 12.03.4.5 (etc.) is illegal due to leading zero.)
012345
["0.1.23.45", "0.1.234.5", "0.12.3.45", "0.12.34.5", "0.123.4.5"]
(Note: the first segment must be 0, because `01` or `012` would be illegal.)
000123
["0.0.0.123"]
(J'ai fait ces exemples à la main, alors s'il vous plaît, alertez-moi de toute erreur que vous pourriez trouver.)