|
楼主 |
发表于 2017-6-23 13:23:54
|
显示全部楼层
我的解答:4行代码版本
- def Calc(rawdata, newdata):
- trans = dict(zip('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',range(62)))
- trans2int = lambda s, m: sum([trans[s[i]]*(m**(len(s)-i-1)) for i in range(len(s))])
- return [(i,j) for i in range(trans[max(rawdata)]+1,63) for j in range(trans[max(newdata)]+1,63) if trans2int(rawdata, i) == trans2int(newdata, j)][0]
复制代码
5行代码版本(用生成器优化了执行效率):
- def Calc(rawdata, newdata):
- trans = dict(zip('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',range(62)))
- trans2int = lambda s, m: sum([trans[s[i]]*(m**(len(s)-i-1)) for i in range(len(s))])
- for each in ((i,j) for i in range(trans[max(rawdata)]+1,63) for j in range(trans[max(newdata)]+1,63) if trans2int(rawdata, i) == trans2int(newdata, j)):
- return each
复制代码 |
|