美文网首页
Learn to Code 1 - 算法解析

Learn to Code 1 - 算法解析

作者: Amy_1c39 | 来源:发表于2018-01-01 23:50 被阅读0次

    算法是Learn to Code 1 的最后一章, 在这里小朋友们需要用到learn to code 1. 中学到的所有知识,来巧妙地解决问题,帮助byte 走出迷宫。

    在完成算法作业前,我们来复习下learn to code 1 中学到的几个知识点:

    1. 指令

    我们通过发出一条指令,来让byte 完成一个动作

    2. function 

    我们可以把多条指令编制成一组,再给这个组起个新名字, 这就得到了一个function 

    在function 中,我们特别要注意function 的语法。它的声明和调用

    3. 循环

    我们学习了for 循环(循环多少次)和while 循环( 循环到什么时候为止)

    4. 逻辑控制

    我们学习了逻辑变量,就是一个事物状态的标志(true  还是false), 以及逻辑变量的组合运算。(!, &&, ||) 

    也学习了如何通过考察逻辑变量的值,选择程序的分支( if ...else if ... else)

    然后,duangduangduagn, 我们就可以开始学习算法了!

    这个难不倒我们小朋友,它的路线是这样的

    由于地图是动态的,我们不能确切地知道byte 从起点到终点需要走几步。幸好,我们可以选择while 循环,让byte 一直走下去,直到路的尽头 — 标志是一个关闭状态的switch

    于是我们可以确定程序框架如下:

    While  !isOnClosedSwitch {

    向前一步()

    }

    从起点到终点的过程中,我们“向前一步”可以有很多种走法。在这里,我们分析出了3种不同的“步伐”

    1.  只要右边没有被挡住,我们就往右拐走一步 (想象一只溜出洞口,沿着墙角爬行的小老鼠)

    2. 如果前方无路,我们就掉头

    3. 否则,就往前走一步

    否则,是需要借助前两句的帮助才能表达的。于是我们连接如下

    此外,只要路上有宝石,我们都去取下它。

    因为有没有宝石,和如何走之间,并没有必然联系,我们可以分两次独立地判断,就是把它们分别放在两个if 中。

    我们也观察到,只有在走到路的尽头(isBlocked) 的时候,宝石才会出现,所以我们也可以把对宝石的判断放在 isBlocked 发生的时候才进行。这样可以减少电脑的一次判别,让它跑得稍微快一点, 当然这点差别我们小朋友是感觉不到的,但是当你让电脑一次跑几百万,几千万条指令的时候,尤其很多人同时跑的时候,这个差别就很明显了。所以我们小朋友从一开始学习,也可以稍稍注意一下程序运行效率的事情,不要让电脑做不必要的工作。

    所以,我们也可以改写为

    或者,既然每次路的尽头都恰好出现一颗宝石,我们就写为:

    注意,关于宝石的判断消失了,只要到了路的尽头,我们就往回转,并且收集宝石。

    完整代码如下

    (由于图片大小超过限制,我们在下一篇求解其他的迷宫)

    相关文章

      网友评论

          本文标题:Learn to Code 1 - 算法解析

          本文链接:https://www.haomeiwen.com/subject/bfjxnxtx.html