0

我有一个复杂的业务逻辑,我相信布尔代数之类的东西应该有能力简化逻辑。谁能告诉我如何通过解决以下问题来做到这一点?

问题来自游戏 X3: Reunion。这是宇宙地图,如果有帮助的话。

在宇宙中,有一些扇区通过传送门连接在一起。要从一个扇区到另一个扇区,您可以飞到那里或跳到那里(速度更快)。如果你跳到另一个区域,你应该确保传送门附近没有太多的人群(否则你会撞到其他人)。你必须有跳跃装置和足够的能量才能跳跃。

有一些孤立的扇区只能通过跳跃到达。

问题是给定一艘船及其当前的扇区和目的地扇区,确定船舶应该如何到达该扇区(通过跳跃或飞行)。另外,如果两个扇区相邻,不要费心跳过。

让我们设置:

a: two sectors are adjacent
b: have jump device and enough energy
c: destination sector is not isolated
d: not too crowd near the gate of the destination

if(!a && b && d) 
  jump now
end

if(!a && b && !d)
  can jump but wait until there is not too crowd near the gate of the destination. 
  Should recheck before the jump, because the ship may be losing the energy
  that makes it not enough to jump.
end

if(!b && c)
  fly to destination
end

你能把上面的 if-end 语句转换成 if-else if-...else-end 语句吗?我想知道最后的“else”是什么意思。我不仅需要结果,还需要接近结果的过程。

非常感谢!

4

1 回答 1

1

您的前 2 个条件都依赖于 !a && b,因此它们之间的差异由 d 的值决定。最后一个条件仅取决于 !b && c

我会这样做:

if (!b && c) { fly }
else if (!a && b) {
    if (d) { jump now } else { wait }
}

或者你可以首先基于'b':

if (b) {
    if (!a) {
        if (d) { jump now } else { wait }
    }
}
else {
    if (c) { fly }
}
于 2013-08-29T01:59:02.873 回答