Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Creative category for IP Network: Route Summarization by _Chico_
def checkio(data):
def summarize(octets):
for shift in range(8):
mask = (0xFF << shift) & 0xFF
if len(set([octet & mask for octet in octets])) == 1:
return 8 - shift, octets[0] & mask
return (0, 0)
data_octets = [list(map(int, datum.split('.'))) for datum in data]
parts = []
bits = 0
after_diff = False
for i in range(4):
if after_diff:
parts.append(0)
else:
octet_column = [datum[i] for datum in data_octets]
if len(set(octet_column)) == 1:
summ_bits = 8
summ_octet = octet_column[0]
else:
summ_bits, summ_octet = summarize(octet_column)
after_diff = True
parts.append(summ_octet)
bits += summ_bits
return '%s/%d' % ('.'.join(map(str, parts)), bits)
May 10, 2021