儿子问了一个问题:
她们分别买了什么?
姗姗、圆圆、娇娇三个人一起去文具商店。她们分别买了油画棒、故事书、文具盒和书包中的一件,并且每个人买的东西都不同。
姗姗说:圆圆买的不是油画棒,娇娇买的不是故事书。
圆圆说:姗姗买的不是故事书,娇娇买的不是文具盒。
娇娇说:姗姗买的不是书包,圆圆买的是文具盒。
她们三个人,每个人说的话有有一半是真的,一半是假的。那么,她们分别买了什么东西?
我先是口头分析出答案,然后告诉儿子也可以用电脑解决这个问题,Python程序如下:
goods = ['油画棒', '故事书', '文具盒', '书包']
m = {'姗姗': None, '圆圆': None, '娇娇': None}
for a in range(4):
for b in range(4):
for c in range(4):
if len(set([a, b, c])) != 3: # 不满足条件:每个人买的东西都不同
continue
m['姗姗'], m['圆圆'], m['娇娇'] = goods[a], goods[b], goods[c]
statements = [[m['圆圆'] != '油画棒', m['娇娇'] != '故事书'],
[m['姗姗'] != '故事书', m['娇娇'] != '文具盒'],
[m['姗姗'] != '书包', m['圆圆'] == '文具盒']]
counts = [0] * len(statements)
for index, value in enumerate(statements):
for statement in value:
if statement:
counts[index] += 1
if counts == [1] * len(statements): # 每个人的说法都有一半是真的
for key in m:
print("{}买了{}".format(key, m[key]))
网友评论