0

次の疑似コードを最も単純な 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  

これまでの疑似コードの私の解釈は、上記のコメントに書かれています。疑似コードの最初の 3 行のロジックを正しく理解できたと思います。

しかし、疑似コードの 4 行目と最後の行のロジックをどのように解釈すればよいかわかりません。4 行目の 4 つの変数の状態と、疑似コードを最も単純な if-else として書き直す方法を理解するのに役立ちます。

4

1 に答える 1

1

最後の行に到達する方法:

a <= b真実でなければならない

y > b偽でなければならない

x < a偽でなければならない

したがって、最後の行は次のようになります。

(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))

(ただし、これは最後の行に到達したい場合にのみ機能します)

于 2015-04-15T17:09:56.420 に答える