加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

妙解围棋子问题

(2023-04-22 10:38:24)
标签:

林老师

pclogo

mswlogo

fmslogo

c

分类: WinXP~7~8~10运行Logo语言
妙解围棋子问题
妙解围棋子问题
      有LOGO编程爱好者求问,【围棋问题】有一把围棋,三个三个数最后余下两个,五个五个数最后余下三个,七个七个数最后余下两个。问这把棋子最少有多少个?这个问题其实与围棋是风马牛不相及的问题。说是“围棋子”也可以,说是“豆子”、“小石子”甚至是若干支"铅笔"、或是“一队人马”、“士兵”都行。同质的命题,套上不同的“面具”就完全换了一个“风景画面”。其实其中的核心是“三个三个数最后余下两个,五个五个数最后余下三个,七个七个数最后余下两个。教师讲课时如果只是给出了答案是“23个棋子”或是一个程序,那恐怕是没有达到“教书育人”的目的。这是一个发散性思维的问题,说少就有不下于十种思路不同的编程方式。作为老师而言,应剖析各种不同编程方式之间的区别及蕴藏的精妙思维;作为学生而言决不能一旦编写出一个可以得到正确答案的程序而沾沾自喜——深入的学习就必需尽可能多地想:“是不是还有别的解决途径”。“围棋子”这道题的多种编程方式都写在下面也是不必,略举几个例子,说明确有宽阔的思路就已经能够说明问题了。

解题一:
TO WQ1  ;For FMSLogo
  FOR[I 7 10000][ ;预估围棋子数上限10000个
    IF (AND 2=REMAINDER :I 3   ;三个三个数最后余下两个
            3=REMAINDER :I 5   ;五个五个数最后余下三个
            2=REMAINDER :I 7)[ ;七个七个数最后余下两个
      PR :I STOP]              ;输出符合条件的结果
    ]
END
WQ1
23
答案是最少的数值是23.

解题二:
TO WQ2 :N  ;:N是假设的起始数的初始值  For FMSLogo
  IF (AND 2=REMAINDER :N 3   ;三个三个数最后余下两个
          3=REMAINDER :N 5   ;五个五个数最后余下三个
          2=REMAINDER :N 7)[ ;七个七个数最后余下两个
      PR :N STOP]              ;输出符合条件的结果
  WQ2 :N+1  ;棋子数自动增长1递归后再进行验证
END
WQ2 1
23

解题三:
TO WQ3 :N  ;:N是假设的起始数的初始值  For FMSLogo
  MAKE "A (:N-2)/3 = INT((:N-2)/3) ;排除除以3不余2
  MAKE "B (:N-3)/5 = INT((:N-3)/5) ;排除除以5不余3
  MAKE "C (:N-2)/7 = INT((:N-2)/7) ;排除除以3不余2
  IF (AND :A="TRUE :B="TRUE :C="TRUE)[PR :N STOP] ;输出最小的可能值
  WQ3 :N+1  ;棋子数自动增长1递归后再进行验证
END
WQ3 1
23
      有些学生反映上课听不懂,其原因可能有两个方面。其一,学生刚开始学习、知识积累尚少,所以无法理解;其二,老师的讲解应力求切中关键、深入浅出也是很重要的。
      如果手头已经有林老师编著的LOGO编程教材,建议从头到尾仔细读一读。都不做基础学习的功课,一上来就刷题,当然就会觉得处处是障碍。
      祝愿正在学习编程的孩子们都能够领略编程思维的精妙,学习到真本领。

妙解围棋子问题

妙解围棋子问题

妙解围棋子问题

LOGO语言编程是很好玩的。下面是LOGO编程输出的图形:

妙解围棋子问题


妙解围棋子问题


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有