ガジェット通信

見たことのないものを見に行こう

【選択式問題】真偽値パズル2解答と解説☆言語不問

DATE:
  • ガジェット通信を≫

真偽値パズル2

本問題は、仮想コードを計算した結果、trueになる行の数を選択肢から選ぶという内容でした。

それでは以下、各問題とその解答を見ていきましょう。

問題のオープニング

あなたは、真偽値の女神「ブーリ=アン」の神殿にやって来ました。

この神殿では、女神の出す問題に正解すれば富を約束され、間違うと死を約束されます。

あなたは、歴戦のプログラマーとして、女神をホゲーッと言わせなければなりません。

この神殿では、以下のような式が複数行分、提示されます。

true | false
true & false

「true」は真の値、「false」は偽の値を示します。各行の計算を行い、計算結果が「trueになる行の数」を答えてください(上記の場合は、1行目のみ計算結果がtrueになるので、答えは1です)。

// 仮想コードのルール
& … AND演算子(2つの値が共にtrueならtrue、それ以外はfalse)
| … OR演算子(2つの値のどちらかがtrueならtrue、それ以外はfalse)
^ … XOR演算子(2つの値が異なるならtrue、それ以外はfalse)
! … NOT演算子(直後の値の真偽を変える)
() … グループ化(計算の優先順位を上げる)

問題1

// 問題
true | false
true & false
true ^ false

// 選択肢
1
2
3

仮想コードの各行を、実際に計算してみましょう。

// 1行目
true | false

「|」OR演算子では、2つの値のどちらかがtrueならtrue、それ以外はfalse。

true

// 2行目
true & false

「&」AND演算子では、2つの値が共にtrueならtrue、それ以外はfalse。

false

// 3行目
true ^ false

「^」XOR演算子では、2つの値が異なるならtrue、それ以外はfalse。

true

「true」の数は2つでした。そのため答えは、2番目の選択肢の『2』になります。

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード

// 問題
var p1, p2, p3;
console.log(p1 = !!( true | false ));
console.log(p2 = !!( true & false ));
console.log(p3 = !!( true ^ false ));
console.log(p1 + p2 + p3);

// 出力結果
true
false
true
2

問題2

// 問題
true | !false
true & !false
!true | false
!true & false

// 選択肢
2
3
4

仮想コードの各行を、実際に計算してみましょう。

// 1行目
true | !false

「!」NOT演算子では、直後の値の真偽を変える。

true | true

次の計算。

true | true

「|」OR演算子では、2つの値のどちらかがtrueならtrue、それ以外はfalse。

true

// 2行目
true & !false

「!」NOT演算子では、直後の値の真偽を変える。

true & true

次の計算。

true & true

「&」AND演算子では、2つの値が共にtrueならtrue、それ以外はfalse。

true

// 3行目
!true | false

「!」NOT演算子では、直後の値の真偽を変える。

false | false

次の計算。

false | false

「|」OR演算子では、2つの値のどちらかがtrueならtrue、それ以外はfalse。

false

// 4行目
!true & false

「!」NOT演算子では、直後の値の真偽を変える。

false & false

次の計算。

false & false

「&」AND演算子では、2つの値が共にtrueならtrue、それ以外はfalse。

false

「true」の数は2つでした。そのため答えは、1番目の選択肢の『2』になります。

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード

// 問題
var p1, p2, p3, p4;
console.log(p1 = !!( true | !false ));
console.log(p2 = !!( true & !false ));
console.log(p3 = !!( !true | false ));
console.log(p4 = !!( !true & false ));
console.log(p1 + p2 + p3 + p4);

// 出力結果
true
true
false
false
2

問題3

// 問題
(true | false) & true
(true ^ false) | true
(true & false) ^ true
!!! true & !!!! false

// 選択肢
1
2
3

仮想コードの各行を、実際に計算してみましょう。

// 1行目
(true | false) & true

「()」グループ化は、計算の優先順位を上げる。
「|」OR演算子では、2つの値のどちらかがtrueならtrue、それ以外はfalse。

true & true

次の計算。

true & true

「&」AND演算子では、2つの値が共にtrueならtrue、それ以外はfalse。

true

// 2行目
(true ^ false) | true

「()」グループ化は、計算の優先順位を上げる。
「^」XOR演算子では、2つの値が異なるならtrue、それ以外はfalse。

true | true

次の計算。

true | true

「|」OR演算子では、2つの値のどちらかがtrueならtrue、それ以外はfalse。

true

// 3行目
(true & false) ^ true

「()」グループ化は、計算の優先順位を上げる。
「&」AND演算子では、2つの値が共にtrueならtrue、それ以外はfalse。

false ^ true

次の計算。

false ^ true

「^」XOR演算子では、2つの値が異なるならtrue、それ以外はfalse。

true

// 4行目
!!! true & !!!! false

「!」NOT演算子では、直後の値の真偽を変える。

!!false & !!!! false

次の計算。

!!false & !!!! false
!true & !!!! false

次の計算。

!true & !!!! false
false & !!!! false

次の計算。

false & !!!! false
false & !!!true

次の計算。

false & !!!true
false & !!false

次の計算。

false & !!false
false & !true

次の計算。

false & !true
false & false

次の計算。

false & false

「&」AND演算子では、2つの値が共にtrueならtrue、それ以外はfalse。
false

「true」の数は3つでした。そのため答えは、3番目の選択肢の『3』になります。

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード

// 問題
var p1, p2, p3, p4;
console.log(p1 = !!( (true | false) & true ));
console.log(p2 = !!( (true ^ false) | true ));
console.log(p3 = !!( (true & false) ^ true ));
console.log(p4 = !!( !!! true & !!!! false ));
console.log(p1 + p2 + p3 + p4);

// 出力結果
true
true
true
false
3

CodeIQ運営事務局より

柳井さん、ありがとうございました!
現在、柳井さんの最新問題が出題中です。
ぜひ挑戦してみてくださいね!

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。

TOP