目录
前言
随着离散数学的开展学习,我们学习了命题逻辑等值演算相关知识,那么现在让我们用python程序来完成其中一个问题吧!
一、题目
在某班班委成员的选举中,已知王小红、李强、丁金生三位同学被选进了班委会。该班的甲、乙、丙三名同学预言如下:
甲说:王小红为班长,李强为生活委员。
乙说:丁金生为班长,王小红为生活委员。
丙说:李强为班长,王小红为学习委员。
班委会分工名单公布后发现,甲、乙、丙三人都恰好猜对了一半,问:王小红、李强、丁金生各任何职位?
二、大致思路
1.将命题符号化
将甲、乙、丙三人的三句话提取三个原子命题,并将其用p、q、r、s、t、w表示。
2.将条件表示出来
就是将甲、乙、丙三人都恰好猜对一半这个条件转化为符号表示。
三、代码实现
'''p代表王小红是班长
q代表李强是生活委员
r代表丁金生是班长
s代表王小红是生活委员
t代表李强是班长
w代表王小红是生活委员'''
ls=[0,1]
for p in ls:
for q in ls:
for r in ls:
for s in ls:
for t in ls:
for w in ls:
a1=(p and not q)
a2=(not p and q)
b1=(r and not s)
b2=(not r and s)
c1=(t and not w)
c2=(not t and w)
if(a1 or a2)and(b1 or b2)and(c1 or c2)and(p and r)==0and(p and s)==0and(p and w)==0and(q and t)==0and(s and w)==0and(q and s)==0and(r and t)==0and(p and r)==0:
print("p:{} q:{} r:{} s:{} t:{} w:{}".format(p,q,r,s,t,w))#1代表正确,0代表错误
四、运行结果
总结
此类问题都可用类似方法求解(个人感觉)