我是Swift和计算机科学的新手。除Apple文档外,我还在iPad上使用Swift Playground来补充我的教育。在Swift Playground中,我的代码的目标是通过迷宫获取我的角色。以下代码将正确地获取我的迷宫:
func navigateAroundWall() {
if isBlockedRight && isBlocked {
turnLeft()
} else if isBlockedRight {
moveForward()
} else {
turnRight()
moveForward()
}
}
while !isOnOpenSwitch {
while !isOnGem && !isOnClosedSwitch {
navigateAroundWall()
}
if isOnGem {
collectGem()
} else {
toggleSwitch()
}
turnLeft()
turnLeft()
}
这就是我的困惑所在:
while !isOnGem && !isOnClosedSwitch {
navigateAroundWall()
}
要正确浏览我的迷宫,如果我的角色'isOnGem'或'isOnClosedSwitch',我的角色不应该'navigateAroundWall'。这个问题是我不明白为什么我的逻辑运算符必须是AND(&&),而不是OR(||)才能正确运行。为什么只有一个条件为真并且使用了AND运算符时才执行'navigateAroundWall'?
下面的图片可以帮助您查看迷宫..正如您所看到的那样,我的角色不会同时出现在宝石和开关(右下角的瓷砖)上
答案 0 :(得分:2)
这是De Morgan定律的一个简单应用: not(a或b)等于不是a而不是b
如果 a 或 b 为true,则不想要转到该呼叫。因此,这等于所呈现的if条件。
你也可以用它来写它,但是你需要否定它,因为不想要在这些条件下这样做。
答案 1 :(得分:0)
你应该知道De Morgan的法律,以了解你的问题在哪里。由于De Morgan定律,NOT(A和B)不是(A)或不是(B),NOT(A或B)不是(A)和NOT(B)。所以,在你的代码中你现在没有(A)和NOT(B)等于NOT(A OR B)。