問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
整数A, B, C, D が与えられます。
以下の 2 つの条件がともに真のとき、またそのときに限り真となる条件式を書いてください。
1. (A と B が等しい) または (C と D が等しい)
2. A と C が等しい
論理演算子には優先順位があり、多くの言語では AND 演算子の方が OR 演算子より優先順位が高いです。
したがって、多くの言語では AND 演算子が先に評価され、その後 OR 演算子が評価されます。(「評価される」とは、ここでは論理演算を行い真偽を返すという意味です。)
優先順位が同じ演算子は左から順に評価されることが多いです。
しかし、プログラムを書いていると AND 演算子より OR 演算子の方を先に評価したい場合があります。
例えば、今回の問題の条件式は以下のように考えられます。
条件 1:A == B OR C == D
条件 2:A == C
この 2 つの条件がともに真のとき真となる条件式なので、最終的な条件式は 条件 1 AND 条件 2
、つまり A == B OR C == D AND A == C
と考えられます。
この場合 AND 演算子が先に評価されるので、最初に C == D AND A == C
が評価され、その後 A == B OR 「C == D AND A == C」の結果
が評価されます。
では、例えば C == D
が偽、A == C
が偽、A == B
が真である場合を考えてみます。
このとき、この条件式は以下のように評価されていきます。
C == D AND A == C
が評価され偽となります。A == B OR 「C == D AND A == C」の結果
が評価され、この条件式は最終的に真となります。A == B OR C == D
を評価し、その後 「A == B OR C == D」の結果 AND A == C
を評価する必要があります。()
で囲うことで先に評価することができます。 ()
を利用して条件式を書いてみましょう。
A B C D
以下の 2 つの条件がともに真のとき、またそのときに限り真となる条件式の真偽を出力してください。
1. (A と B が等しい) または (C と D が等しい)
2. A と C が等しい
出力結果は以下のものを期待しています。
・ 条件式が真である場合:1
, true
, True
, TRUE
のいずれか
・ 条件式が偽である場合:0
, false
, False
, FALSE
のいずれか
条件式の出力結果が上記のいずれにも当てはまらない言語を使用している場合は、if 文等を使用して上記のいずれかの出力結果になるようにしてください。
主要な言語での出力方法例を示します。
Pythonの場合 : print( 条件式 )
C++の場合 : std::cout << ( 条件式 ) << std::endl;
Javaの場合 : System.out.println( 条件式 );
Rubyの場合 : puts 条件式
末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
1 ≦ A, B, C, D ≦ 100
1 1 1 2
1
1 1 2 1
0
50 80 50 50
1