python代码:
# 获取答案的所有排列组合
def get_all_str(str, num):
if(num == 1):
for x in str:
yield x
else:
for x in str:
for y in get_all_str(str, num-1):
yield x+y
strKey=['A', 'B', 'C', 'D']
answer_list = []
for x in get_all_str(strKey,10):
answer_list.append(':'+x) # 获得所有答案组合,从1开始计数
# 进行运算
for a in answer_list:
if(a[2] == 'A' and a[5] == 'C') or (a[2] == 'B' and a[5] == 'D') or \
(a[2] == 'C' and a[5] == 'A') or (a[2] == 'D' and a[5] == 'B'):
if(a[3] == 'A' and a[3] != a[6] and a[3] != a[2] and a[3] != a[4]) or \
(a[3] == 'B' and a[6] != a[3] and a[6] != a[2] and a[6] != a[4]) or \
(a[3] == 'C' and a[2] != a[3] and a[2] != a[6] and a[2] != a[4]) or \
(a[3] == 'D' and a[4] != a[3] and a[4] != a[6] and a[4] != a[2]):
if(a[4] =='A' and a[1]==a[5] and a[2]!=a[7] and a[1]!=a[9] and a[6]!=a[10]) or \
(a[4] =='B' and a[1]!=a[5] and a[2]==a[7] and a[1]!=a[9] and a[6]!=a[10]) or \
(a[4] =='C' and a[1]!=a[5] and a[2]!=a[7] and a[1]==a[9] and a[6]!=a[10]) or \
(a[4] =='D' and a[1]!=a[5] and a[2]!=a[7] and a[1]!=a[9] and a[6]==a[10]):
if(a[5] =='A' and a[5]==a[8]) or (a[5] =='B' and a[5]==a[4]) or \
(a[5] =='C' and a[5]==a[9]) or (a[5] =='D' and a[5]==a[7]):
if(a[6] == 'A' and a[2]==a[4]==a[8]) or \
(a[6] == 'B' and a[1]==a[6]==a[8]) or \
(a[6] == 'C' and a[3]==a[10]==a[8]) or \
(a[6] == 'D' and a[5]==a[9]==a[8]):
if(a[8]=='A' and (strKey.index(a[7])-strKey.index(a[1]))!=1) or \
(a[8]=='B' and (strKey.index(a[5])-strKey.index(a[1]))!=1) or \
(a[8]=='C' and (strKey.index(a[2])-strKey.index(a[1]))!=1) or \
(a[8]=='D' and (strKey.index(a[10])-strKey.index(a[1]))!=1):
if(a[9]=='A' and (a[1]==a[6]) != (a[6]==a[5])) or \
(a[9]=='B' and (a[1]==a[6]) != (a[10]==a[5])) or \
(a[9]=='A' and (a[1]==a[6]) != (a[2]==a[5])) or \
(a[9]=='A' and (a[1]==a[6]) != (a[9]==a[5])):
num = []
for i in strKey:
num.append(a.count(i))
if(a[7] == 'A' and strKey[num.index(min(num))]=='C') or \
(a[7] == 'B' and strKey[num.index(min(num))]=='B') or \
(a[7] == 'C' and strKey[num.index(min(num))]=='A') or \
(a[7] == 'D' and strKey[num.index(min(num))]=='D'):
if(a[10] == 'A' and (max(num)-min(num))==3) or \
(a[10] == 'B' and (max(num)-min(num))==2) or \
(a[10] == 'C' and (max(num)-min(num))==4) or \
(a[10] == 'D' and (max(num)-min(num))==1):
print('答案是' + a)
运行结果: