Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
33
Task/Canonicalize-CIDR/11l/canonicalize-cidr.11l
Normal file
33
Task/Canonicalize-CIDR/11l/canonicalize-cidr.11l
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
F cidr_parse(str)
|
||||
V (addr_str, m_str) = str.split(‘/’)
|
||||
V (a, b, c, d) = addr_str.split(‘.’).map(Int)
|
||||
V m = Int(m_str)
|
||||
I m < 1 | m > 32
|
||||
| a < 0 | a > 255
|
||||
| b < 0 | b > 255
|
||||
| c < 0 | c > 255
|
||||
| d < 0 | d > 255
|
||||
R (0, 0)
|
||||
V mask = (-)((1 << (32 - m)) - 1)
|
||||
V address = (a << 24) + (b << 16) + (c << 8) + d
|
||||
address [&]= mask
|
||||
R (address, m)
|
||||
|
||||
F cidr_format(=address, mask_length)
|
||||
V d = address [&] F'F
|
||||
address >>= 8
|
||||
V c = address [&] F'F
|
||||
address >>= 8
|
||||
V b = address [&] F'F
|
||||
address >>= 8
|
||||
V a = address [&] F'F
|
||||
R a‘.’b‘.’c‘.’d‘/’mask_length
|
||||
|
||||
L(test) [‘87.70.141.1/22’,
|
||||
‘36.18.154.103/12’,
|
||||
‘62.62.197.11/29’,
|
||||
‘67.137.119.181/4’,
|
||||
‘161.214.74.21/24’,
|
||||
‘184.232.176.184/18’]
|
||||
V (address, mask_length) = cidr_parse(test)
|
||||
print(‘#<18 -> #.’.format(test, cidr_format(address, mask_length)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue