ガジェット通信

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

【謎解きプログラム】計算結果を当てよ!【比較と○△演算子】解答と解説

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

【謎解きプログラム】計算結果を当てよ!【比較と○△演算子】

本問題は、「計算結果を当てよ!」というテーマで、プログラムにちなんだ謎を解くというものでした。

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

問題のオープニング

ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。

「24時間以内に謎が解けない場合は、このPCのデータは消失する。

 謎は、あなたが真のプログラマーなら解けるものだ」

これは挑戦状ではなく脅迫状だ!

そこには、見たことのない謎が掲載されていた。

あなたは歴戦のプログラマーとして、データを救うために、この謎に挑むことになった。

説明

法則を見つけよう!

T字型に配置された数字があります。

T字の線が交わる所には、プログラムの比較演算子(=, ==, !=)が入る箱があります。同じ問題では、この比較演算子は共通のものとなります。

配置された数字と計算結果を見て、問題の答えを予想してください。

問題1

// サンプル
3 [?] 2
4
→ 答えは「4」
5

2 [?] 3
4
→ 答えは「5」
5

// 問題
1 [?] -1
2
→ 答えは何?
3

// 選択肢
1
-1
2
3

最初に種明かしをすると、このT字型の式は、条件演算子を変形したものです。「A ? B : C」のAのところに、比較演算子の式を置いて「X 演算子 Y ? B : C」として、?と:のところで改行しています。

// 元の式
X 演算子 Y ? B : C

// 改行
X 演算子 Y
B
C

上記の前提で、T字型の式を、通常の条件演算子の式に変形してみましょう。

// サンプル
3 [?] 2 ? 4 : 5; // 答えは「4」
2 [?] 3 ? 4 : 5; // 答えは「5」

// 問題
1 [?] -1 ? 2 : 3; // 答えは何?

比較演算子(=, ==, !=)をひとつずつ当てはめていき、サンプルが成立するものを探してみましょう。

// サンプルが成立する比較演算子1
3 > 2 ? 4 : 5; // 答えは「4」
2 > 3 ? 4 : 5; // 答えは「5」

// サンプルが成立する比較演算子2
3 >= 2 ? 4 : 5; // 答えは「4」
2 >= 3 ? 4 : 5; // 答えは「5」

比較演算子「>」「>=」で成立しました。このどちらを用いても、問題の答えは同じになります。というわけで、比較演算子を入れて、計算してみましょう。

// 問題 > を挿入
1 > -1 ? 2 : 3; // 答えは2

// 問題 >= を挿入
1 >= -1 ? 2 : 3; // 答えは「2」

というわけで、3番目の選択肢の『2』が答えになります。

Javaサンプル

以下、サンドボックス(言語は「Java8」)で、実行確認できるコードを示します。コード欄に、下記のコードをコピペして、INPUTは空で、RUNボタンを押してください。

// 参考コード
class Main{
public static void main(String[]args) {
// サンプル
System.out.println(3 > 2 ? 4 : 5);
System.out.println(2 > 3 ? 4 : 5);
// 問題
System.out.println(1 > -1 ? 2 : 3);
}
}

// 出力
4
5
2

JavaScriptサンプル

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

// 参考コード
// サンプル
console.log(3 > 2 ? 4 : 5);
console.log(2 > 3 ? 4 : 5);

// 問題
console.log(1 > -1 ? 2 : 3);

// 出力
4
5
2

問題2

// サンプル
6 [?] 9
0
→ 答えは「8」
8

9 [?] 6
1
→ 答えは「5」
5

// 問題
5 [?] 5
6
→ 答えは何?
9

// 選択肢
9
6
1
5

T字型の式を、通常の条件演算子の式に変形してみましょう。

// サンプル
6 [?] 9 ? 0 : 8; // 答えは「8」
9 [?] 6 ? 1 : 5; // 答えは「5」

// 問題
5 [?] 5 ? 6 : 9; // 答えは何?

比較演算子(=, ==, !=)をひとつずつ当てはめていき、サンプルが成立するものを探してみましょう。

// サンプルが成立する比較演算子
6 == 9 ? 0 : 8; // 答えは「8」
9 == 6 ? 1 : 5; // 答えは「5」

比較演算子「==」で成立しました。というわけで、比較演算子を入れて、計算してみましょう。

// 問題 == を挿入
5 == 5 ? 6 : 9; // 答えは「6」

というわけで、2番目の選択肢の『6』が答えになります。

Javaサンプル

以下、サンドボックス(言語は「Java8」)で、実行確認できるコードを示します。コード欄に、下記のコードをコピペして、INPUTは空で、RUNボタンを押してください。

// 参考コード
class Main{
public static void main(String[]args) {
// サンプル
System.out.println(6 == 9 ? 0 : 8);
System.out.println(9 == 6 ? 1 : 5);
// 問題
System.out.println(5 == 5 ? 6 : 9);
}
}

// 出力
8
5
6

JavaScriptサンプル

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

// 参考コード
// サンプル
console.log(6 == 9 ? 0 : 8);
console.log(9 == 6 ? 1 : 5);

// 問題
console.log(5 == 5 ? 6 : 9);

// 出力
8
5
6

問題3

// サンプル
1 [?] 3
2
→ 答えは「2」
5

3 [?] 1
5
→ 答えは「5」
2

// 問題
8 [?] 8
0
→ 答えは何?
7

// 選択肢
8
16
0
7

T字型の式を、通常の条件演算子の式に変形してみましょう。

// サンプル
1 [?] 3 ? 2 : 5; // 答えは「2」
3 [?] 1 ? 5 : 2; // 答えは「5」

// 問題
8 [?] 8 ? 0 : 7; // 答えは何?

比較演算子(=, ==, !=)をひとつずつ当てはめていき、サンプルが成立するものを探してみましょう。

// サンプルが成立する比較演算子
1 != 3 ? 2 : 5; // 答えは「2」
3 != 1 ? 5 : 2; // 答えは「5」

比較演算子「!=」で成立しました。というわけで、比較演算子を入れて、計算してみましょう。

// 問題 != を挿入
8 != 8 ? 0 : 7; // 答えは「7」

というわけで、4番目の選択肢の『7』が答えになります。

Javaサンプル

以下、サンドボックス(言語は「Java8」)で、実行確認できるコードを示します。コード欄に、下記のコードをコピペして、INPUTは空で、RUNボタンを押してください。

// 参考コード
class Main{
public static void main(String[]args) {
// サンプル
System.out.println(1 != 3 ? 2 : 5);
System.out.println(3 != 1 ? 5 : 2);
// 問題
System.out.println(8 != 8 ? 0 : 7);
}
}

// 出力
2
5
7

JavaScriptサンプル

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

// 参考コード
// サンプル
console.log(1 != 3 ? 2 : 5);
console.log(3 != 1 ? 5 : 2);

// 問題
console.log(8 != 8 ? 0 : 7);

// 出力
2
5
7

CodeIQ運営事務局より

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

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

TOP