Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
28
Task/Canonicalize-CIDR/Mathematica/canonicalize-cidr.math
Normal file
28
Task/Canonicalize-CIDR/Mathematica/canonicalize-cidr.math
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
ClearAll[CanonicalizeCIDR]
|
||||
CanonicalizeCIDR[str_String] := Module[{i, ip, chop, keep, change},
|
||||
If[StringMatchQ[str, "*.*.*.*/*"],
|
||||
i = StringSplit[str, "." | "/"];
|
||||
i = Interpreter["Integer"] /@ i;
|
||||
If[MatchQ[i, {_Integer, _Integer, _Integer, _Integer, _Integer}],
|
||||
If[AllTrue[i, Between[{0, 255}]],
|
||||
{ip, {chop}} = TakeDrop[i, 4];
|
||||
ip = Catenate[IntegerDigits[ip, 2, 8]];
|
||||
{keep, change} = TakeDrop[ip, chop];
|
||||
change = ConstantArray[0, Length[change]];
|
||||
ip = Partition[Join[keep, change], 8];
|
||||
ip = ToString[FromDigits[#, 2]] & /@ ip;
|
||||
StringRiffle[ip, "."] <> "/" <> ToString[chop]
|
||||
,
|
||||
Failure["Invalid range of numbers", <|"Input" -> str|>]
|
||||
]
|
||||
,
|
||||
Failure["Invalid format", <|"Input" -> str|>]
|
||||
]
|
||||
]
|
||||
]
|
||||
CanonicalizeCIDR["87.70.141.1/22"]
|
||||
CanonicalizeCIDR["36.18.154.103/12"]
|
||||
CanonicalizeCIDR["62.62.197.11/29"]
|
||||
CanonicalizeCIDR["67.137.119.181/4"]
|
||||
CanonicalizeCIDR["161.214.74.21/24"]
|
||||
CanonicalizeCIDR["184.232.176.184/18"]
|
||||
Loading…
Add table
Add a link
Reference in a new issue