为啥RE?
查看原帖
为啥RE?
583610
DrAlfred楼主2022/6/25 20:07
from parse import compile

class Main:
    expression = compile("{}.{}.{}.{}:{}")
    op, ad     = "", ""
    connMap    = {}
    n , i      = 0 ,0
    def outrange(a: int, b: int, c: int, d: int, e: int) -> bool:
        return (
            (a < 0 or a > 255) or
            (b < 0 or b > 255) or
            (c < 0 or c > 255) or
            (d < 0 or d > 255) or
            (e < 0 or e > 65535)
        )


    def gudgeIp(address: str) -> list:
        a, b, c, d, e = int(), int(), int(), int(), int()
        matchResult = Main.expression.parse(address)
        if (matchResult == None):
            return []
        checkString = ""
        for index in range(5):
            checkString += str(int(matchResult[index]))
            if(index < 3):
                checkString += '.'
            if(index == 3):
                checkString += ':'
        a = int(matchResult[0])
        b = int(matchResult[1])
        c = int(matchResult[2])
        d = int(matchResult[3])
        e = int(matchResult[4])
        if (Main.outrange(a, b, c, d, e) or checkString != address):
            return []
        return [a, b, c, d, e]

    def reserveAdd(address: str) -> bool:
        for item in Main.connMap:
            if (item == address):
                return False
        return True

    def solveServer() -> None:
        gudgeInfo = Main.gudgeIp(Main.ad)
        if (gudgeInfo == []):
            print("ERR")
            return
        getIpStat = Main.reserveAdd(Main.ad)
        if not getIpStat:
            print("FAIL")
            return
        print("OK")
        Main.connMap[Main.ad] = Main.i

    def solveClient() -> None:
        gudgeInfo = Main.gudgeIp(Main.ad)
        if (gudgeInfo == []):
            print("ERR")
            return
        getIpStat = Main.reserveAdd(Main.ad)
        if getIpStat:
            print("FAIL")
            return
        print(Main.connMap[Main.ad])

    def main() -> None:
        Main.n = int(input())
        for k in range(1 ,Main.n + 1):
            Main.i = k
            Main.op ,Main.ad = input().split()
            if (Main.op=="Server"):
                Main.solveServer()
            else:
                Main.solveClient()
        return


Main.main()

2022/6/25 20:07
加载中...