查看原文
其他

刷100道奥数题,不如学会这道逻辑题和它的思考方法,这才是数学和编程的通关密码

十一姐 帝呱呱星球 2022-05-16


文章开始前,先给大家出道逻辑题:


假如你认识长得一模一样的三胞胎,约翰、詹姆斯和威廉。约翰和詹姆斯总是说谎,威廉总是说真话。
约翰欠了你一笔钱。有一天你在马路上碰到了三胞胎的其中一个人,你想要确认一下这个人是不是约翰,但你只能问一个问题,你会问什么问题呢?

听起来是不是无从下手?


别急,听我慢慢讲。


在前两天的文章纠结要不要给孩子学编程?纠结怎么选?先搞懂这个问题,你心里才能有答案里,我和大家聊到了编程思维,说到了让孩子具有编程思维,并不是让每个孩子都去学Scratch、Python、C++,做码农。这些都只是计算机语言,是一种工具。


就好像你要叫一个外国人帮你做一件事情,你掌握了英语的语法,但到底要叫这个人去做一件什么有趣的事,怎么样一步步做成这件事,还做的快、做的好、做的漂亮,后面的这些,才是编程思维。


这种广义上的编程思维,是一种思考的模式,一种解决问题的方法,一种创造力。这才是我们要让孩子具备的。


那么,编程思维到底是什么呢?


把它拆解一下,有几个核心的思维方法。今天我们先来聊前面两个——分解和分类,聊完之后,我们再反回来看这道题。


分 解


在之前提到过的日本NHK制作的关于编程的科普节目《Texico》里,有一个很好玩的游戏,叫“编程人”。


一个人假装自己是机器人,另外一个人给机器人编程。


如果你是叫一个人去扔垃圾,你会怎么说?


“嘿,帮我把垃圾扔掉吧。”


但是叫一个机器人去扔垃圾呢?你这么说,他可能坐着不动。你得把这个目标,一步步拆解成分解的动作。


你可以这么拆解:


转向右面——单膝跪地——捡垃圾——转向左面——扔下垃圾——往前跨一步——循环前面动作



而捡垃圾这个动作,还可以继续拆解:


五指张开——手臂往下——五指合拢——手臂抬起


把复杂的问题,拆解成小问题,再把小问题一步步分解、理顺,就是编程思维里最基础的思维。


这种思维在孩子的学习、工作、生活里都太重要了。


而它可以怎么训练呢?


这个“编程人”就是一个非常好的游戏,大家在家可以和孩子玩起来,我和妞妞有时就会化身机器人和遥控器,下指令让对方去做一件事。这个过程很好玩,经常会出现转错方向、撞墙的乌龙事件,笑料百出。


除此之外,对每天的行程进行计划安排; 做事情的时候,跟孩子一起列出“第一步、第二步”,都是对此的训练。比如说,出门前,让孩子想想穿戴的步骤,是先背上背包,还是先穿外套?是先穿袜子,还是先穿鞋子?


这种分解,除了能把事情理顺,里边还包含着创新的机会。


比如我们上厕所的时候,经常会把手机钱包往身后一放,就忘了。


可能我们会把这归结于记性不好,没有想过为什么。


用编程思维分析一下,其实是因为“起身——开锁——出门”这个顺序里,拿手机钱包不是必经步骤,那就难免要忘。那么,能不能把它变成必经步骤呢?


在日本的洗手间,有一种这样的设计,关上门之后,门锁就变成了放置手机、钱包的置物台。



把手机钱包放在这上面会怎么样呢?


当你想要出去,第一步,必须拿起置物台上的手机和钱包。



这就是通过改变分解的步骤顺序来发现问题、解决问题。


当你习惯于这样的刻意思考之后,创新真是无处不在啊。


分 类


除了分解步骤,还要分解情况,也就是分类。


编程人游戏里,有一次的任务是:吃巧克力的机器人。


肚子饿吗?


第一种情况是:YES


这种情况接下来的步骤就是:转向左边——吃巧克力。



第二种情况是:NO


那么:转向右边——抽纸巾,擦嘴巴。



但分类是不是就这么简单呢?


并不是,因为你必须考虑到所有可能出现的情况,并且让这些情况互相不重复。


比如说上面这个例子里,如果机器人依然肚子饿,转向左边,却发现巧克力吃完了,无法执行“吃巧克力”的步骤,怎么办?这个时候程序就得出错了,因为他不知道该怎么做。


所以我们还需要加上其他可能的情况:


巧克力吃完了,还是饿,拿来更多巧克力;

巧克力吃完了,刚好不饿了,转向右边擦嘴巴,等等。


这是一种非常重要的逻辑思维方式,叫MECE原则,是麦肯锡咨询顾问芭芭拉·明托在《金字塔原理》当中提出过的一种分类思考的方法,英文是Mutually Exclusive Collectively Exhaustive,意思是“相互独立,完全穷尽”


也就是说,在考虑各种分类情况的时候,要既不重复、也不遗漏。



举个例子,我们要设计一个冰淇淋车的游戏。


有2种口味的水果(葡萄、苹果)和2种口味的冰淇淋(巧克力、香草),可以自由组合搭配出不同口味的“水果冰淇淋”,怎么才能涵盖所有的搭配方式,并且不重复呢?


如果你想着,先用葡萄搭配试试,再用苹果搭配试试,那么很容易出现重复或者遗漏,到最后自己脑子都乱了,不知道什么算了、什么没算。大家是不是经常碰到这种情况?


更好的方法是分级分类,先用大的类别进行框定:


1种水果+1种冰淇淋

1种水果+2种冰淇淋

2种水果+1种冰淇淋

2种水果+2种冰淇淋


这个大框架框住了所有可能性,也确保了不会出现重复。


然后,再在大分类里一级一级往下,逐级细分



大家应该看出来了,这是数学里常见的排列组合问题。


所以说,编程思维也好、数学思维也好,其实是相通的,都是底层的分析、解决问题的思维模式。


今天我们说到的2种思维方法,“分解”“分类”,其实都是“有序思考”


有序思考不管是在数学、编程,还是日常的生活中,都非常重要。它能帮助你从一团乱麻似的问题里,找到一个线头,顺着它一点点往外拉,就把乱麻解开了。


很多乍一听非常复杂的问题,一旦你用这样的思维方式去拆解,就会变得很简单。


好,现在我们回到文章一开始的那道逻辑题。


三个长得一模一样的人,约翰和詹姆斯总是说谎,威廉总是说真话。你要问一个问题,来确认你碰到的这个人,是不是约翰。


来试试用有序思考的方法,把它分类拆解一下吧。



看,当你问“你是詹姆斯吗”,只有约翰一个人会回答“是”。所以,你只要问这个问题,就可以判断了。


你看,这就是思维方法的力量。这道题不难,你只是不知道怎么去思考。


那些看起来很聪明的人,其实不一定和智商有关,他们可能是经过训练的思维方法的赢家。


思维改变命运,这是我发自内心的深刻体会。除了知识,我最希望给到妞妞的,是视野和这些核心的思维方法。今天我们聊到了两个,下回咱们再来拆解另外几个吧。

*快速了解帝呱呱星球,可以点击下方专辑哦~





长按上图中的二维码添加诞姐和十一姐的私人微信。来和我们聊一聊吧~

      转载开白请加微信:xywull商务合作请后台回复“商务合作”


   

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存