ガジェット通信

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

【選択式問題】文字コードパズル2【言語不問】解答と解説

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

文字コードパズル2

本問題は、仮想コードのルールに従った処理の結果を、選択肢から選ぶというものでした。

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

問題のオープニング

あなたは、文字コードの女神「キャラ=クター」の神殿にやって来ました。

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

あなたは、歴戦のプログラマーとして、女神の意図をくんで解答しなければなりません。

この神殿では、仮想コードが提示されます。その計算結果を、選択肢から選んでください。

// 仮想コードのルール
toCode(s) …… 文字sを文字コードの数字に変換。
toChar(n) …… 文字コードの数字nを文字に変換。
“a” …… 文字
123 …… 数字
“a” + “b” …… 文字列の連結
123 + 456 …… 数字の加算
※ 文字コードはASCIIコードになります。

問題1

// 問題
toChar(toCode(“D”)+3)

// 選択肢
A
B
F
G

それでは問題の答えが、どのような値になるか、見ていきましょう。

// 仮想コードの処理

「toCode(“D”)」で、文字「D」の文字コードを取り出す。

「toCode(“D”)+3」で、文字「D」の文字コードに3を足す。

「D+1」は「E」、「D+2」は「F」、「D+3」は「G」。なので「G」の文字コードになる。

「toChar(toCode(“D”)+3)」で、「G」の文字コードを文字にする。

つまり「G」が答え。

上記の通り、答えは4番目の選択肢の『G』になります。

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

// 参考コード

// 関数
function toCode(s) {return s.charCodeAt(0)};
function toChar(n) {return String.fromCharCode(n)};

// 問題
console.log(toChar(toCode(“D”)+3));

// 出力結果
G

問題2

// 問題
toChar(toCode(“I”)-1)+toChar(toCode(“B”)-1)+toChar(toCode(“M”)-1)

// 選択肢
IBM
HAL
JCN

それでは問題の答えが、どのような値になるか、見ていきましょう。

// 仮想コードの処理

「toChar(toCode(“I”)-1)+toChar(toCode(“B”)-1)+toChar(toCode(“M”)-1)」を分解する。
toChar(toCode(“I”)-1)
+toChar(toCode(“B”)-1)
+toChar(toCode(“M”)-1)

「toChar(toCode(文字)-1)」を3回繰り返して文字を得て、最後に「+」で文字列連結をしている。

「toChar(toCode(文字)-1)」は、各文字の1文字前の文字を得るという、問題1と似た処理。

「I」「B」「M」の、1文字前の文字を得ると「H」「A」「L」になる。

「H」「A」「L」を文字列連結すると「HAL」。これが答えになる。

上記の通り、答えは2番目の選択肢の『HAL』になります。

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

// 参考コード

// 関数
function toCode(s) {return s.charCodeAt(0)};
function toChar(n) {return String.fromCharCode(n)};

// 問題
console.log(toChar(toCode(“I”)-1)+toChar(toCode(“B”)-1)+toChar(toCode(“M”)-1));

// 出力結果
HAL

問題3

// 問題
toChar(toCode(“K”)-toCode(“C”)+toCode(“A”))+toChar(toCode(“Q”))

// 選択肢
HM
IQ
FM
MQ

それでは問題の答えが、どのような値になるか、見ていきましょう。

// 仮想コードの処理

「toChar(toCode(“K”)-toCode(“C”)+toCode(“A”))+toChar(toCode(“Q”))」を分解する。
toChar(toCode(“K”)-toCode(“C”)+toCode(“A”))
+toChar(toCode(“Q”))

2行目の「toChar(toCode(“Q”))」は、文字コードにしたあと文字に戻しているだけなので「Q」のまま変わらず。

以下、1行目を見ていく。

一見すると難しそうだが、「-toCode(“C”)+toCode(“A”)」に注目する。「C」は「A」の2文字前なので、この式の結果は「-2」になる。

そのため「toChar(toCode(“K”)-toCode(“C”)+toCode(“A”))」は「toChar(toCode(“K”)-2)」に変換できる。

「toChar(toCode(“K”)-2)」は、「K」の2文字前なので「I」となる。

最後に「”I”+”Q”」の文字列結合を行い、「IQ」が答えとなる。

上記の通り、答えは2番目の選択肢の『IQ』になります。

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

// 参考コード

// 関数
function toCode(s) {return s.charCodeAt(0)};
function toChar(n) {return String.fromCharCode(n)};

// 問題
console.log(toChar(toCode(“K”)-toCode(“C”)+toCode(“A”))+toChar(toCode(“Q”)));

// 出力結果
IQ

CodeIQ運営事務局より

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

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