Scratch找次品问题
2021-07-29陈新龙
陈新龙
找次品是一道经典的小学奥数题,通过“找次品”理解优化思想,培养推理能力,让学生充分感受到数学与日常生活的紧密联系,以往我们是通过画图、列表的形式来进行解答,现在我们要通过Scratch编程来完成解题,这需要对问题有清晰的认识,学会建立合适的数学模型。
找次品:7个零件中有一个次品(次品重一些),假如用天平称重,至少称几次能保证找出次品呢?
称重方法:(1)将7个零件分成3份(3,3,1),天平两边各放3个零件。如果天平平衡,则进行第(2)步,如果不平衡,则进行第(3)步。
(2)此时天平平衡,则次品一定是剩余的一个零件。一共称了一次。
(3)如果天平不平衡,那么将重的一边零件分成三份(1,1,1),任取兩个零件放在天平的两边,如果此时天平平衡,那么剩下的就是次品,如果天平不平衡,那么重的一边就是次品。一共称了两次。
经过多次的实验统计,“三分法”是“找次品”最佳方法,尽量将物体分成3份,如果遇到无法平分的,就让其中一份比其他两份多1或者少1,然后将数列最大的继续分成三等份,直到最后分成了(1,1,1)或者(1,1)的结果,中间分了几次,那么称的次数就是几次。
除了上面的作图法我们还可以用列表法,计算出称重的过程,当物品个数在1-3个时候,至少要称重1次。当物品数量在4-9个的时候,至少称重2次。当物品数量在10-27个的时候,至少称重3次。根据规律我们可以推导出符合规律的数据模型:3a 1
编程思路:用户通过键盘输入物品的个数,系统自动判断,找到符合数据模型的值,根据“三分法”将物品数量拆分三个数存在列表中,从列表中查找最大的值,继续进行拆分,将新的值的结果覆盖原来的结果,显示在列表中,直到最后三个数的和小于或者等于3结束。
主程序用来控制所有的模块运行,首先询问输入的产品总数,获取产品数量,接下来利用我们数据模型公式创建一个函数模块“3的幂次方”主要用来计算称重次数,根据公式3
当收到广播通知后,利用“三分法”的思路,将待测物品的数量不断分成3个数,前两个数四舍五入产品数量除以3,最后一个数利用数量总和减去前两次的结果,计算出来的结果保存在列表中,根据解题思路,拆分做到最坏的打算,选择列表中最多的物品数量,继续进行拆分,直到最终的产品数量的值为1结束程序。
本次的实验程序还是有一定难度的,很考验数学逻辑思维能力,需要先进行推理和建立数学模型,然后根据数学模型完成编程模块。