离散数学班委竞选问题用python程序实现(课本p45.30)

目录

前言

一、题目

二、大致思路

1.将命题符号化

2.将条件表示出来

三、代码实现

四、运行结果

总结


前言

随着离散数学的开展学习,我们学习了命题逻辑等值演算相关知识,那么现在让我们用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代表错误
                        

四、运行结果

总结

此类问题都可用类似方法求解(个人感觉)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值