既然是排列组合和匹配问题,其实可以用itertools和re模块来解决。
- logins = [319, 680, 180, 690, 129, 620, 762, 689, 762, 318, 368, 710, 720, 710, 629, 168, 160, 689, 716, 731, 736, 729,
- 316, 729, 729, 710, 769, 290, 719, 680, 318, 389, 162, 289, 162, 718, 729, 319, 790, 680, 890, 362, 319, 760,
- 316, 729, 380, 319, 728, 716]
- import re
- import itertools as it
- def findlog(n):
- s = list(str(n))
- return '.*'+'.*?'.join(s)+'.*'
- for i in it.permutations(['1','2','3','6','7','8','9','0'],8):
- flag = 1
- for j in logins:
- if not re.match(findlog(j),''.join(i)):
- flag = 0
- break
- if flag:
- print ''.join(i)
- break
复制代码
秒出答案 |