欢迎光临
我们一直在努力

Scratch第二十二讲:数学系列——逻辑推理题

昨天跟大家用计算机算法做了一个鸡兔同笼的问题,用的是计算机擅长的枚举的做法,今天再跟大家用计算机做一下小学数学的逻辑推理题。

———— / 小升初的逻辑推理题 / ————

例 1】 刘刚、马辉、李强三个男孩各有一个妹妹,六个人进行乒乓球混合双打比赛.事先规定:兄妹二人不许搭伴.第一盘:刘刚和小丽对李强和小英;第二盘:李强和小红对刘刚和马辉的妹妹.问:三个男孩的妹妹分别是谁?

解析:由题知兄妹二人不许搭伴,那么根据第一盘可以知道刘刚与小丽、李强与小英都不是兄妹.由第二盘可以看出,李强与小红不是兄妹.那么李强和小丽是兄妹关系,又根据第二盘李强和小红对刘刚和马辉的妹妹,那么这里李强和小丽是兄妹关系,小红又和李强一组,那么马辉的妹妹就只能是小英,继续推理下去就得到:所刘刚与小红、马辉与小英、李强与小丽分别是兄妹.

大家看懂没有,这种是基本的小升初逻辑推理题。如果不会做肯定考不上重点初中的

先看看程序效果:

———— / 计算机算法逻辑讲解 / ————

计算机逻辑算法很简单,还是穷举,就是把所有的情况都试一遍。三个男生,三个女生,所有的可能性就是3*3*3=27种,全部试一遍,把题中给出的不符合的条件的组合都去掉,剩下的就是正确答案。所以逻辑很简单,不用翻来覆去的推理。

福尔摩斯的逻辑:除去一切不可能,剩下的无论多么不可能都是事实。

所以题中不可能的条件都有哪些?

1:每个人只有一个妹子,所以要把那些重复妹子的可能性去掉。

2:刘刚和小丽不是兄妹,要去掉。

3:李强和小英也不是兄妹,要去掉。

4:李强和小红也不是兄妹,要去掉。

5:最后一条有点坑,既然第二局是“李强和小红对刘刚和马辉的妹妹”,那就说明小红可不是马辉的妹妹。

这些就是所有不可能的情况,把他们都去掉,就剩下可能了。

———— /Scratch代码讲解 / ————

那这段程序怎么编写呢?

第一步创建一个链表,三个哥哥放到链表里,分别是链表中的第一项,第二项和第三项。

然后我们在去创建三个变量,分别是:Hong,Li,Ying,分别代表小红,小丽,小英。那么这三个变量可能的数字就是1~3,对应链表中第几项里面哥哥名字的妹妹。比如小英等于1,那么就代表是刘刚妹妹的这种可能性。Hong,Li,Ying,分别都有1、2、3这三种可能性。然后我们去用循环的算法去把hong, Li, Ying所有的可能性全部试一遍,然后把不可能的去掉,就是答案了。

小女孩的代码:

初始化部分:

这部分代码是初始化。注意程序每次执行的一开始记得清空链表,否则下次执行时每次都会往里面插入变量。

条件判断部分:

第一个循环是(最外面的循环)小丽的循环,从1到3,3种可能性。每次循环开始执行的时候要记得把小红和小英先归零。

第二个循环(中间的循环)是小英的循环,也是从1到3,3种可能性,不过这里面就要去除小英跟小丽都是同一个哥哥的所有情况。所以加了一个判断:小英不等于小丽。

第三个循环(最里面的循环)是小红的循环,这里就要去除小红跟小英或者是小红跟小丽是同一个哥哥的情况,所以加了一个判断:小红既不等于小丽也不能等于小英。

这样5种不可能的第一条不可能就被去掉了。

剩下的4种不可能用一条判断语句就搞定了:

这种连续组合的 ‘与’ 怎么写大家可能有点容易写错,这里教大家一个技巧:

1:首先把这四个小条件单独列出来:

2:再把连续4个‘与’的空语句放好:

这样看到没?有可以放条件的四个空格,并且都是“与操作”。

3:那现在就可以把刚才提前写好的四个条件判断一个一个放进去了:

记住要从左往右一个一个填,填好之后拖动的时候,一定要点住最底下那层,否则就会把贴上去的条件又给拖下来了。

最后还有一条长语句:就是符合上面五种条件后,剩下的可能性就是最终答案了,怎么把答案说出来呢?这里面要用到昨天学的连接命令,把文字和变量连接起来。(把“小英的哥哥是”这段文本和链表第‘Yin’个变量链接起来)

技巧也是先把每个基础的语句先连接好,然后再把基础语句连接在一起,跟刚才拼接条件一样。

其他的小细节的程序代码就不介绍了。

小猫的代码:

———— /总结 / ————

今天学到了计算机的逻辑推理算法,还用到了链表,还教了大家长条件和长语句的组合技巧。开心不,开心就帮CC哥多拉几个朋友一起关注咱们这个号吧。

超乎想象的使用体验

加的时候请备注:Scratch。

赞(4)
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址