搜索
查看: 584|回复: 1
打印 上一主题 下一主题

啊哈编程星球第24关通关历程

[复制链接]
跳转到指定楼层
楼主
 楼主| 发表于 2018-6-15 21:22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【友情提示:如果不是时间没处安放,请直接阅读第四和第五的代码】

一、最初我并没有思考太多,以四个外角作循环,直接笨笨地写下简单直白的代码,也因此代码较多,共13行代码。(相对于提示的7行代码显得过多)
代码如下:【非菜鸟,请略过】
move(2)
turn("left")
for i in range(4):
    move()
    toggle()
    move()
    toggle()
    turn("left")
    move()
    toggle()
    move()
turn("left")
move(2)


二、随后我尝试的是“回”字循环,但代码依然有12行。(相对于提示的7行代码依然显得过多)
代码如下:【非菜鸟,请略过】
for i in range(4):
    move(2)
    turn("left")
    for i in range(2):
        move()
        toggle()
    turn("left")
    move()
    toggle()
    move()
    turn("left")
    move(2)


三、接着我在上面的基础上进行修改优化,终于把代码缩减到8行。(实质上这份代码可以缩减至7行,达到完美通关,但我当时忽略了)
代码如下:【非菜鸟,请略过】
for i in range(4):
    for i in range(4):
        move()
        toggle()
        move()
        toggle()
        turn("left")
    turn("right")


四、在思考不能进一步的时候我感觉或许需要更高级的代码,所以我去网查了一下相关答案。
代码如下:
答案一
for i in range(4):
    for i in range(4):
        for i in range(2):
            self.move()
            self.toggle()
        self.turn("left")
    self.turn("right")
答案二
for i in range(32):
    self.move()
    self.toggle()
    if(i%2==1 and i%8!=7):
        self.turn("left")


五、因为上面的答案涉及到了新知识,所以我思考能不能在已有知识的情况下达到完美通关。
在当时我并没有想出来,但在几天后我回来再次尝试时,我找到了想要的答案。这次依然是如同第三步一样,走“回”字循环,区别是这一次在“回”字循环里没一边都作为一个循环节点。
代码如下:
for i in range(4):
    for i in range(4):
        for i in range(2):
            move()
            toggle()
        turn("left")
    turn("right")
实质上,这份代码就是第三步代码的进一步缩减。(区别在于第三是代码优化的结果,第五是观察循环节点的结果)


【谢谢光临】




沙发
发表于 2018-6-16 08:47:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表