伪代码的简化
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))
(但这仅在您只想到达最后一行时有效)
我正在尝试将以下伪代码重写为最简单的 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))
(但这仅在您只想到达最后一行时有效)