kmm

#-*-coding:cp936-*-

g_max = 0

class POS:
    def __init__(self, val):
        self.x = 0
        self.y = 0
        self.z = 0
        i = 0
        v = 1
        while True:
            if v < val:
                i += 1
                v += 6*i
            else:
                break
        if i > 0:
            side = (v - val)/i
            step = (v - val)%i
            if side == 0:
                self.x = i
                self.y = -i + step
                self.z =  self.x + self.y
            if side == 1:
                self.z = i
                self.y = step
                self.x = self.z - self.y
            if side == 2:
                self.y = i
                self.z = i - step
                self.x = self.z - self.y
            if side == 3:
                self.x = -i
                self.y = i - step
                self.z = self.x + self.y
            if side == 4:
                self.z = -i
                self.y = -step
                self.x = self.z - self.y
            if side == 5:
                self.y = -i
                self.z = -i + step
                self.x = self.z - self.y
    def __sub__(self, p): # override minus method
        if self.x > p.x:
            i = self.x - p.x
        else:
            i = p.x - self.x
        if self.y > p.y:
            j = self.y - p.y
        else:
            j = p.y - self.y
        if self.z > p.z:
            k = self.z -p.z
        else:
            k = p.z - self.z
        if i > j:
            if i > k:
                return i
            else:
                return k
        elif j > k:
            return j
        else:
            return k


def InitCellularDistrict(iMaxSeqValue):
    global g_max 
    if iMaxSeqValue > 0 and iMaxSeqValue <= 100000:
        g_max = iMaxSeqValue
        return 0
    else:
        return -1

def GetShortestPathLength(iFirstValue, iSecondValue):
    global g_max
    if 0 < iFirstValue and iSecondValue <= g_max and 0 < iSecondValue and iSecondValue <= g_max:
        first = POS(iFirstValue)
        second = POS(iSecondValue)
        return first-second
def Clear():
    g_max = 0

if __name__ == '__main__':
    InitCellularDistrict(70)
    a = GetShortestPathLength(70, 7)
    print str(a)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值