推理与布尔运算
2020-08-20Intoweb
Intoweb
莎士比亚在《威尼斯商人》中写到,向富家少女鲍西娅求婚需要破解猜盒问题。鲍西娅有金、银、铅三个盒子,其中只有一个盒子放有鲍西娅肖像,盒子上面分别刻有三句话,求婚者通过这三句话,判断肖像放在哪只盒子里。三个盒子上刻的三句话分别是:
金盒子:“肖像不在此盒子中。”
银盒子:“肖像在铅盒中。”
铅盒子:“肖像不在此盒中。”
这三句话中,只有一句是真的。
使用逻辑推理就能判断出肖像在金盒子中。因为银盒子和铅盒子上的话是矛盾关系,必有一真一假。三句话中最多只有一句为真,如果银盒子为真,那么金盒子也为真,就有两句话为真,不符合题意;所以一定是银盒子为假,那么铅盒子为真,金盒子和银盒子为假,满足题意。可推出肖像在金盒子中。
在编程中我们通过判断布尔型值也可以完成以上的推理题,算出满足题目的答案。
所谓布尔型值,它是常见数据分类中的一种,如:
1、2、3、4、-1、0、1.2,100.5等等整数或者小数被称为数值型数据或者数字型数据;
“哈哈”、“A”、“a”、“小狗”等等字母或者汉字被称为字符型数据;
5>4,a<6、b>3,a<6与b>3、b=4或b>4,b<4不成立等等表示两值之间关系的叫条件表达式,用逻辑运算符“与”、“或”、“不成立”連接的两个或者多个条件表达式形成的表达式被称为布尔型数据类型,布尔型值的结果只有两种,要么为真(1)要么为假(0)。
下面以一道猜盒子的题目为例,我们学习通过灵活运用布尔型值解决逻辑推理问题的方法。
一、 题目描述
有金、银、铜、锡的四个盒子,每个盒子上都有一句话但是有一句话是假的,并且只有一个盒子里装有肖像,通过这四句话分析肖像到底在哪个盒子中。
1. 金盒子:“肖像不在此盒子中。”
2. 银盒子:“肖像在铜盒子中。”
3. 铜盒子:“肖像不在银盒子中。”
4. 锡盒子:“肖像在金盒子中。”
二、 题意分析
由于肖像到底在哪个盒子中还是一个未知的问题,可能在任意盒子中,所以我们将肖像所在的盒子数设定为变量,为了方便表示,我们分别用1、2、3、4代表金盒子、银盒子、铜盒子、锡盒子;只要能满足有一句话是假的,三句话是真的就能确定答案。由于一个条件(布尔型值)的结果要么为真(1)要么为假(0),所以只要所有条件的布尔型值加起来等于3就表示有三句为真。
三、 逻辑推理
将已知条件转化为逻辑表达式,如下表。那么肖像在某个盒子中转为逻辑表达式就是,金:肖像=1,银:肖像=2,铜:肖像=3,锡:肖像=4。
比如第一个条件“肖像不在金盒子中”,转为逻辑表达式为<肖像=1>不成立,那么四个盒子判断布尔型值的结果依次为0,1,1,1。
将四个盒子上的条件的判断布尔型值填入表格,用只有一句话是假的作为最终判断条件:<肖像=1>不成立+<肖像=3>+<肖像=2>不成立+<肖像=4>=3。哪个盒子的布尔型值和为3就为需要的结果(见下表)。
四、 程序推理
本例使用变量、条件判断以及重复执行来编写算法程序解决逻辑推理题,通过判断布尔型值推理出满足题目的答案,从而达到训练逻辑思维能力的目的。那么如果盒子上的话只有一句是真的,请问肖像放在哪里?稍微修改一下四个值之和为1即可。