趣味数学

2020-01-05 07:05
电脑报 2020年44期
关键词:克隆抽屉鸽子

“7只鸽子飞回3个鸽巢中,不管怎么样放,总有一个鸽巢里至少有三只鸽子”这反应了数学组合中的一个基本原理,称为鸽巢原理(或者是抽屉原理),由德国数学家狄利克雷提出。鸽巢问题常见题型就是将3个苹果放入两个抽屉里面,无论怎么放置,肯定有一个抽屉里有两个或者两个以上的苹果。今天我们就用Scratch来解决这个数学问题。

首先确定鸽巢和鸽子的数量,在输入正确的数量之后,舞台上显示对应数量的鸽巢和鸽子图片。系统会自动根据鸽巢原理形成一个将每个鸽子关进不同鸽巢的动画效果。并给出最终的答案,且显示解题思路(图1)。

1. 人物角色代码

新建三个变量:鸽巢数量、鸽子数量以及答案。创建人物角色德温对鸽巢问题进行解说,德温会询问一共有几个鸽巢和多少只鸽子。界面中会根据输入的数量显示出鸽巢和鸽子。根据用户给出的数量说出要解决的问题:多少个鸽巢飞进了多少只鸽子,那么一个鸽巢中至少飞进了几只鸽子呢?使用鸽子的总数÷鸽巢个数=商……余数。答案=商+1。答案的最后附加上解题思路(图2)。

2. 鸽巢代码

当用户在输入框中输入正确的鸽巢数量之后,会广播“显示鸽巢”并等待。鸽巢角色收到这条广播后,会显示并根据输入数量减一克隆自身,这样舞台上算上本体数量就与要求一致了。在克隆时X轴增加60,等待0.5秒。表现出复制鸽巢的动画效果(图3)。

3. 鸽子代码

鸽子受广播控制表现两段动画,出现和进入鸽巢。收到“显示鸽子”时用鸽巢同样的克隆方法显示出来(图4)。

当收到“动画演示”后,将所有的鸽子全部隐藏,移动到第一个鸽巢位置中显示,每个鸽巢先进入一只鸽子,第一排位置占满后从第二排继续进入,第二次重复执行语句的次数为鸽子数-鸽巢数-1。直至所有的鸽子全部收入鸽巢中结束(图5)。

如何求出每個鸽巢中可以装入多少只鸽子呢?只需要按照鸽子的数量除以鸽巢的数量的商进行向上取整。如果仅仅用简单的数学知识来完成鸽巢问题其实是比较简单的,当使用Scratch动画模拟推导过程,就需要多方考虑变量和循环的变化以及角色图形的限制,保证动画效果的完美。

猜你喜欢
克隆抽屉鸽子
暗中取袜
谁是小偷
抽屉男孩
鸽子
小鸽子
属于“我们”
属于“我们”
我的抽屉
飞翔的鸽子
Cloning Pets克隆宠物