华为刷题
判断两个IP是否属于同一子网
def checkNetSegment(mask, ip1, ip2):
str2ints = lambda s:[int(num) for num in s.split('.')]
bitAnd = lambda x, y:[x[i] & y[i] for i in range(4)]
isRightIP = lambda li:not (False in [i >= 0 and i <= 255 for i in li])
mask, ip1, ip2 = str2ints(mask), str2ints(ip1), str2ints(ip2)
if False in [isRightIP(mask), isRightIP(ip1), isRightIP(ip2)]:
return 1
res = sum([1 for i in range(4) if bitAnd(mask, ip1) != bitAnd(mask, ip2)])
return 0 if res == 0 else 2
# mask = '255.255.255.0'
# ip1 = '192.168.10.255'
# ip2 = '192.168.10.4'
mask = raw_input()
ip1 = raw_input()
ip2 = raw_input()
print checkNetSegment(mask, ip1, ip2)