Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for IP Network: Route Summarization by Rounin
def checkio(data):
data = list(map(lambda ip: int(''.join(map(lambda segment: ((('0'*8)+(bin(int(segment))[2:])))[::-1][0:8][::-1], ip.split("."))), 2), data))
commonbits = (1<<32)-1
mask = data[0]
for i in range(1, len(data)):
commonbits &= ~(data[i] ^ mask)
mask = data[i]
ones = 0
while (commonbits >> (31-ones))&1 == 1:
ones += 1
mask = (mask >> (32-ones)) << (32-ones)
return '.'.join(map(str, [mask>>24, (mask>>16)&255, (mask>>8)&255, mask&255]))+'/'+str(ones)
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert (checkio(["172.16.12.0", "172.16.13.0", "172.16.14.0", "172.16.15.0"]) == "172.16.12.0/22"), "First Test"
assert (checkio(["172.16.12.0", "172.16.13.0", "172.155.43.9"]) == "172.0.0.0/8"), "Second Test"
assert (checkio(["172.16.12.0", "172.16.13.0", "172.155.43.9", "146.11.2.2"]) == "128.0.0.0/2"), "Third Test"
Aug. 8, 2017