题解 | #判断两个IP是否属于同一子网# python3

判断两个IP是否属于同一子网

https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218

import sys
from typing import List


val_mask = [0]
for x in reversed(range(8)):
    new_mask = max(val_mask)+ (1<<x)
    val_mask.append(new_mask)



def is_val_mask(mask: List[int]) -> bool:
    if all(x == 255 for x in mask):
        return False
    if all(x == 0 for x in mask):
        return False

    for x in range(4):
        if mask[x] == 255:
            continue
        if mask[x] in val_mask:
            if sum(mask[x+1:]) != 0:
                return False
            return True
        return False
    
def is_val_address(address: List[int]) -> bool:
    if len(address) != 4:
        return False
    for x in address:
        if x<0 or x >255:
            return False
    return True


def binary_and(mask,ip):
    return list(map(lambda x,y: x&y, ip,mask))

def solve(mask,ip_1,ip_2):
    if not (is_val_address(ip_1) and is_val_address(ip_2) and is_val_address(mask) and is_val_mask(mask)):
        return 1
    return 0 if binary_and(mask,ip_1) == binary_and(mask,ip_2) else 2


while True:
    try:
        mask = list(map(int,input().split('.')))
        ip_1 = list(map(int,input().split('.')))
        ip_2 = list(map(int,input().split('.')))
        print(solve(mask,ip_1,ip_2))
    except:
        break



纯纯的苦力活,学不到东西

全部评论

相关推荐

nbdy:字太多了,写简历不是写自传,亮点难点技能点列出来就行,要简明扼要
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务