【友情提示:如果不是时间没处安放,请直接阅读第四和第五的代码】
一、最初我并没有思考太多,以四个外角作循环,直接笨笨地写下简单直白的代码,也因此代码较多,共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")
实质上,这份代码就是第三步代码的进一步缩减。(区别在于第三是代码优化的结果,第五是观察循环节点的结果)
【谢谢光临】
网友评论