离散数学课后习题:班委选举,王小红,李强,丁金生各任何职?

在某班班委成员的选举中,已知王小红、李强、丁金生三位同学被选进了班委会。该班的甲,乙,丙三名学生预言如下:

        甲说:王小红为班长,李强为生活委员。

        乙说:丁金生为班长,王小红为生活委员。

丙说:李强为班长,王小红为学习委员。

班委会分工名单公布后发现,甲、乙、丙三人都恰好猜对了一半。问:王小红、李强、丁金生各任何职(用等值演算求解)?

'''在某班班委成员的选举中,已知王小红、李强、丁金生三位同学被选进了班委会。该班的甲,乙,丙三名学生预言如下:

    甲说:王小红为班长,李强为生活委员。

    乙说:丁金生为班长,王小红为生活委员。

    丙说:李强为班长,王小红为学习委员。
班委会分工名单公布后发现,甲、乙、丙三人都恰好猜对了一半。问:王小红、李强、丁金生各任何职(用等值演算求解)?'''
'''
设命题:
    a:王小红为班长 b:李强为生活委员
    c:丁金生为班长 d:王小红为生活委员
    e:李强为班长   f:王小红为学习委员
    甲、乙、丙三人的判断分别用Q R S表示:
'''

for a in range(2):
    for b in range(2):
        for c in range(2):
            for d in range(2):
                for e in range(2):
                    for f in range(2):
                        if (a == 1 and c == 1): continue
                        if (a == 1 and d == 1): continue
                        if (a == 1 and f == 1): continue
                        if (b == 1 and d == 1): continue
                        if (b == 1 and e == 1): continue

                        Q = ((not a) and b) or (a and (not b))
                        R = ((not c) and d) or (c and (not d))
                        S = ((not e) and f) or (e and (not f))

                        E = Q and R and S

                        if E ==1:
                            if a ==1:
                                print("王小红为班长")
                            elif d == 1:
                                print('王小红为生活委员')
                            else:
                                print('王小红为学习委员')


                            if c == 1:
                                print('丁金生为班长')
                            if e == 1:
                                print('李强为班长')
                            if f == 1:
                                print('李强为生活委员')
#如果只显示了两个人的,那另一个人的职位就是剩下那个职位
王小红为学习委员
丁金生为班长
李强为生活委员

Process finished with exit code 0

综上所述:丁金生为班长

                  王小红为学习委员

                  李强为生活委员

你可能感兴趣的:(Python实现,离散数学,逻辑推理,python)