趣学妙用Scratch编程32 进阶篇(二) 谁是小偷?

在上一节《赛跑排名》中,我们已经学会了如何借助Scratch进行逻辑推理,通过已知的条件做出正确的判断。现在,就让我们借助于这种逻辑推理能力,来过一把当侦探的瘾吧。

问题

斯可瑞奇城的著名侦探Tom接到威灵顿古堡的管家打来的电话,说他们古堡有一件重要的首饰丢失了。警方虽然抓到了四名嫌疑人,断定小偷就在这四个人当中,但是无法确定谁才是真正的小偷,需要Tom帮忙。于是Tom赶到现场协助审查这几个嫌疑人,出于对嫌疑人隐私的保护,我们用甲、乙、丙、丁来代表他们,他们的口供如下:

甲:我不是小偷。
乙:丙是小偷。
丙:丁是小偷。
丁:丙在胡说八道!

现在可以确定的是这四个人中有三个人说的是真话,一个人说的是假话。根据这些信息,请你帮助Tom找出到底谁是小偷。

分析

上一节我们已经学会了用Scratch进行推理的方法,就是先把已知的条件转化为逻辑表达式,然后再在所有的可能性中寻找满足条件的那一项。对于这个问题来说,我们把甲、乙、丙、丁四个人分别用1、2、3、4表示,再设置一个“小偷”变量,那么这个变量的取值只有1、2、3、4四种可能性,根据四个人的口供,我们可以生成下面这四个逻辑表达式:

已知条件 逻辑表达式
甲:我不是小偷。 < 小偷 = 1 > 不成立
乙:丙是小偷。 < 小偷 = 3 >
丙:丁是小偷。 < 小偷 = 4 >
丁:丙在胡说八道! < 小偷 = 4 > 不成立

根据题目描述,上面四个逻辑表达式只有三个成立,那我们就把四种情况,即小偷等于1、2、3、4枚举出来,看哪种情况下有三个表达式成立,这个时候看小偷变量就知道谁是小偷了。

编程

我们新建Scratc程序,加入甲乙丙丁四个角色,并新建一个变量“小偷”,再建立一个列表,里面按顺序写入甲乙丙丁,这个列表的作用是最后根据序号(1、2、3、4)找到小偷的名字。接下来编写程序让嫌疑人依次说出口供,由一个小螃蟹角色进行判断,判断的相关代码如下:

其它角色说话、发送消息的代码就交给你完成吧!程序的运行效果如下:


真相只有一个,丙是小偷!

总结

这节课我们应用Scratch的逻辑推理又解决了新的问题,相信你对这类问题的解决办法有了更深入的体会。那么,你不妨试一下,如果把条件中丁的口供修改为“乙在胡说八道”,那么谁才是小偷呢?

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

莲花-第10届蓝桥杯Scratch选拔赛真题精选

2023-6-27 10:42:16

综合资讯

趣学妙用Scratch编程33 进阶篇(三) 分数的四则运算

2023-6-28 9:14:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索