我的思路是如果有红宝石,就拾取然后左转,一直循环至结束。但发现在第二个转弯处小人会停止循环,如果你是用这种思路来写,可以按照如下代码:

while !isBlocked || isOnGem {
    while isOnGem {
        collectGem()
        turnLeft()
    }
    moveForward()
}

与教程答案思路相反,我是检测到有红宝石时运行内嵌套代码,关键在于第一行,需要添加逻辑运算符。

外循环:在不阻碍 或 有红宝石时运行 内循环

内循环:有红宝石时 运行 代码

外循环:内循环运行代码后向前一步

最后外循环:在有阻碍 或 没有红宝石时 结束循环

取巧的一面在于每次有阻碍时必有红宝石,如果有阻碍且没有红宝石时外循环将会提前结束循环。

教程结束,感谢观看。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐