Bazen bir IPv4 adresi yazarken, tüm sayıları doğru buluyorum, ancak bir veya daha fazla dönem yazmayı unuttum. Kırık IPv4 adresimi alan ve eksik dönemlerin olası tüm geçerli yerleşimlerini çıkaran bir program (veya işlev) kullanmak istiyorum.
Giriş
Girdi her zaman geçerli bir IPv4 adresinin dönüşümü olan bir dize olacaktır (aşağıdaki ayrıntılara bakın). Her zaman yalnızca bir veya daha fazla dönem karakterinin ortadan kaldırılmasıyla dönüştürülmüş olacak.
Gönderdiğiniz bu format dışındaki girişleri işlemeniz gerekmez.
Çıktı
Girdiden nokta karakterlerinin girilmesi ile girilen tüm geçerli IPv4 adreslerini temsil eden dizelerin belirli bir sıra veya biçimde olmayan bir koleksiyonu veya listesi.
- Çıktı, yerel bir liste veya sıralı veya sıralanmamış bir koleksiyon türü olabilir.
- Alternatif olarak, açık bir şekilde ayrılmış IPv4 adresinin bir dizi dizisi olabilir.
- Dizginizi sınırlandırmak için tek karakterli bir sınırlayıcı kullanıyorsanız, bu tek karakterli sınırlayıcı olarak noktalara ve rakamlara izin verilmez. Sayıların aksine, sınırlayıcı olarak geçen sürelerin belirsiz olmadığını (her dördüncü periyot zorunlu olarak sınırlayıcı olacağından) fark ediyorum;
IPv4 adres formatı
IPv4 adresleri gerçekten yalnızca dört ikili oktet dizisi olsa da, bu zorluk sınırlı bir noktalı ondalık biçimini kullanır.
- IPv4 adresi, üç döneme ayrılmış dört ondalık değerdir.
- Dört değerlerin her biri aralığındaki
0
için255
kapsayıcı. - Önde gelen sıfırlara herhangi bir sayı değerinde izin verilmez . (Bağımsız bir karakter
0
izin herhangi bir başka sayıda sıfır ile başlayan değildir:052
,00
vs.)
Test Kılıfları
Girdi ilk satırda, ikinci satırda çıktı (burada, çevrelenmiş virgülle ayrılmış, virgülle ayrılmış alıntı dizgiler listesi olarak yapılandırılmış [
]
, ancak yukarıda belirtilen şekilde herhangi bir makul biçim veya yapı kullanabilirsiniz). Bazı örneklerde, belirli bir kuralın uygulanmasını vurgulamak için üçüncü bir satırda notlar vardır.
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"]
(Bu örnekleri el ile yaptım, lütfen bulabildiğiniz herhangi bir hata için beni uyarın.)