IPv4アドレスを入力するときに、すべての数字を正しく入力することもありますが、1つ以上のピリオドを入力するのを忘れています。壊れたIPv4アドレスを取得し、欠落しているピリオドのすべての有効な配置を出力するプログラム(または機能)が必要です。
入力
入力は常に、有効なIPv4アドレスの変換である文字列になります(以下の詳細を参照)。常に1つ以上のピリオド文字を削除するだけで変換されます。
送信する際に、この形式以外の入力を処理する必要はありません。
出力
ピリオド文字を入力に挿入することで入力から作成できるすべての有効なIPv4アドレスを表す文字列のコレクションまたはリスト。特定の順序や形式はありません。
- 出力は、言語固有のリスト、またはその他の順序付けされたまたは順序付けされていないコレクションタイプです。
- または、何らかの明確な方法で区切られたIPv4アドレスの文字列シーケンスである場合もあります。
- 1文字の区切り文字を使用して文字列を区切る場合、その1文字の区切り文字としてピリオドと数字は使用できません。数字とは異なり、区切り文字としてのピリオドはあいまいではありません(4番目ごとにピリオドが必ず区切り文字になるため)が、読みやすくするために、これを禁止しています。
IPv4アドレス形式
IPv4アドレスは実際には4つのバイナリオクテットのシーケンスにすぎませんが、このチャレンジでは制限付きドット付き10進形式を使用します。
- IPv4アドレスは、3つのピリオドで区切られた4つの10進数値です。
- 4つの値はそれぞれ、
0
からまでの範囲に255
あります。 - 数値の先頭にゼロを使用することはできません。(スタンドアロン一文字が
0
許可され、ゼロから始まる任意の他の数ではない:052
、00
、等)
テストケース
入力は1行目に、出力は2行目にあります(ここでは、引用符で囲まれたコンマ区切りのリストとして構成され、コンマで区切られ、で囲まれて[
]
いますが、上記のように、適切な形式または構造を使用できます)。一部の例では、特定のルールの適用を強調するために3行目に注記があります。
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"]
(これらの例を手作業で作成したので、間違いを発見した場合は注意してください。)