伪代码的简化

Simplification of pseudocode

我正在尝试将以下伪代码重写为最简单的 if-else,但我很难完全理解其中的逻辑。

if (a <= b) then  // Here, a <= b.
  if (y > b) then P  // Here, (a <= b) & (y > b).  
  else if (x < a) then P  // Here, (a <= b) & !(y > b) & (x < a).
    else if ((y >= a) & (x <= b)) then Q else R  

到目前为止,我对伪代码的解释写在上面的评论中。 我想我已经正确理解了前三行伪代码的逻辑。

但是,我不确定如何解释伪代码的第四行和最后一行的逻辑。 我想帮助理解第四行四个变量的状态,以及如何将伪代码重写为最简单的 if-else。

如何到达最后一行:

a <= b 必须为真

y > b 必须为 false

x < a 必须为 false

所以最后一行是:

(a <= b) & !(y > b) & !(x < a) & (y >= a) & (x <= b)

这会导致以下结果:

a <= b & a <= x & a <= y -> a 必须是最小值

b >= a & b >= y & b >= x -> b 必须是最大值

y <= b & y >= a -> y 必须介于 a 和 b

之间

x >= a & x <= b -> x 必须在 a 和 b

之间

这导致:

if((x >= a & x <= b) & (y >= a & y <= b))

(但这仅在您只想到达最后一行时有效)