|
发表于 2018-3-5 10:27:09
|
显示全部楼层
本帖最后由 jerryxjr1220 于 2018-3-5 10:32 编辑
代码的可读性要强,不然过一段时间自己都看不懂了,修改起来也麻烦。
- def i2(ans):
- a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = ans
- if a2=="A" and a5=="C": return True
- if a2=="B" and a5=="D": return True
- if a2=="C" and a5=="A": return True
- if a2=="D" and a5=="B": return True
- return False
- def i3(ans):
- a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = ans
- if len(set([a3,a6,a2,a4])) != 2: return False
- if a3=="A" and a6==a2==a4: return True
- if a3=="B" and a3==a2==a4: return True
- if a3=="C" and a6==a3==a4: return True
- if a3=="D" and a6==a2==a3: return True
- return False
- def i4(ans):
- a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = ans
- if a4=="A" and a1==a5: return True
- if a4=="B" and a2==a7: return True
- if a4=="C" and a1==a9: return True
- if a4=="D" and a6==a10: return True
- return False
- def i5(ans):
- a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = ans
- if a5==a8=="A": return True
- if a5==a4=="B": return True
- if a5==a9=="C": return True
- if a5==a7=="D": return True
- return False
- def i6(ans):
- a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = ans
- if a6=="A" and a8==a2==a4: return True
- if a6=="B" and a8==a1==a6: return True
- if a6=="C" and a8==a3==a10: return True
- if a6=="D" and a8==a5==a9: return True
- return False
- def i7(ans):
- a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = ans
- ans = list(ans)
- if a7=="A" and min(ans,key=ans.count)=="C": return True
- if a7=="B" and min(ans,key=ans.count)=="B": return True
- if a7=="C" and min(ans,key=ans.count)=="A": return True
- if a7=="D" and min(ans,key=ans.count)=="D": return True
- return False
- def i8(ans):
- a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = ans
- if a8=="A" and abs(ord(a1)-ord(a7))>1: return True
- if a8=="B" and abs(ord(a1)-ord(a5))>1: return True
- if a8=="C" and abs(ord(a1)-ord(a2))>1: return True
- if a8=="D" and abs(ord(a1)-ord(a10))>1: return True
- return False
- def i9(ans):
- a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = ans
- if a9=="A" and ((a1==a6) != (a6==a5)): return True
- if a9=="B" and ((a1==a6) != (a10==a5)): return True
- if a9=="C" and ((a1==a6) != (a2==a5)): return True
- if a9=="D" and ((a1==a6) != (a9==a5)): return True
- return False
- def i10(ans):
- a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = ans
- ans = list(ans)
- if a10=="A" and ans.count(max(ans,key=ans.count))-ans.count(min(ans,key=ans.count))==3: return True
- if a10=="B" and ans.count(max(ans,key=ans.count))-ans.count(min(ans,key=ans.count))==2: return True
- if a10=="C" and ans.count(max(ans,key=ans.count))-ans.count(min(ans,key=ans.count))==4: return True
- if a10=="D" and ans.count(max(ans,key=ans.count))-ans.count(min(ans,key=ans.count))==1: return True
- return False
- from itertools import product
- for each in product("ABCD",repeat=10):
- if not i2(each): continue
- if not i3(each): continue
- if not i4(each): continue
- if not i5(each): continue
- if not i6(each): continue
- if not i7(each): continue
- if not i8(each): continue
- if not i9(each): continue
- if not i10(each): continue
- print(each)
复制代码
('B', 'C', 'A', 'C', 'A', 'C', 'D', 'A', 'B', 'A')
[Finished in 0.8s] |
|