Wenn ich eine IPv4-Adresse eingebe, werden manchmal alle Zahlen richtig angezeigt, aber ich vergesse, einen oder mehrere Punkte einzugeben. Ich hätte gerne ein Programm (oder eine Funktion), das meine defekte IPv4-Adresse übernimmt und alle möglichen gültigen Platzierungen der fehlenden Zeiträume ausgibt.
Eingang
Die Eingabe ist immer eine Zeichenfolge, die eine Umwandlung einer gültigen IPv4-Adresse darstellt (siehe Einzelheiten unten). Es wird immer nur durch die Eliminierung eines oder mehrerer Punktzeichen transformiert worden sein.
Ihr Beitrag muss keine Eingaben außerhalb dieses Formats verarbeiten.
Ausgabe
Eine Sammlung oder Liste von Zeichenfolgen, die alle gültigen IPv4-Adressen darstellen, die aus der Eingabe erstellt werden können, indem Punkte in die Eingabe eingefügt werden.
- Die Ausgabe kann eine Liste in der Sprache oder ein anderer geordneter oder ungeordneter Sammlungstyp sein.
- Alternativ kann es sich um eine Zeichenfolge von IPv4-Adressen handeln, die auf eine eindeutige Weise abgegrenzt sind.
- Wenn Sie einen Einzelzeichenbegrenzer zur Begrenzung Ihrer Zeichenfolge verwenden, sind Punkte und Ziffern als dieser Einzelzeichenbegrenzer nicht zulässig. Mir ist klar, dass Punkte als Begrenzer im Gegensatz zu Zahlen nicht mehrdeutig sind (da jeder vierte Punkt notwendigerweise ein Begrenzer sein müsste), aber der Lesbarkeit halber lehne ich dies ab.
IPv4-Adressformat
Während IPv4-Adressen eigentlich nur eine Folge von vier binären Oktetten sind, verwendet diese Herausforderung ein eingeschränktes Punkt-Dezimal-Format.
- Eine IPv4-Adresse besteht aus vier Dezimalwerten, die durch drei Punkte getrennt sind.
- Jeder der vier Werte liegt im Bereich
0
bis255
einschließlich. - Führende Nullen sind in keinem Zahlenwert zulässig . (Standalone eines Zeichen
0
erlaubt ist, jede andere Zahl mit einer Null beginnt , ist nicht:052
,00
, etc.)
Testfälle
Die Eingabe erfolgt in der ersten Zeile, die Ausgabe in der zweiten Zeile (hier als durch Kommas getrennte Liste von Zeichenfolgen in Anführungszeichen, die durch Kommas getrennt sind, umgeben von [
]
, aber Sie können jedes sinnvolle Format oder jede sinnvolle Struktur wie oben angegeben verwenden). Einige Beispiele haben Anmerkungen in einer dritten Zeile, um die Anwendung einer bestimmten Regel hervorzuheben.
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"]
(Ich habe diese Beispiele von Hand angefertigt. Bitte benachrichtigen Sie mich über etwaige Fehler.)