体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

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

真偽値パズル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

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