ガジェット通信

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

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

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

文字コードパズル

本問題は、仮想コードを実行した結果、生成される文字を選ぶという内容でした。

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

問題のオープニング

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

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

あなたは、歴戦のプログラマーとして、女神に「高度ねえ~」と、感心させなければなりません。

この神殿では、仮想コードの式が提示されます。その結果生成される文字を、選択肢から選びます(文字コードはASCIIコードになります)。

// 仮想コードのルール
toCode(s) …… 文字sを文字コードの数字に変換。
toChar(n) …… 文字コードの数字nを文字に変換。

問題1

// 問題
toChar(toCode(“A”) + 1)

// 選択肢
a
B
2

仮想コードの実行結果を順番に見ていきましょう。

toChar(toCode(“A”) + 1) …… 「A」の文字コードは「65」。
→ toChar(65 + 1) …… 「65 + 1」は「66」。
toChar(66) …… 文字コード「66」の文字は「B」。
B

そのため答えは、2番目の選択肢の『B』になります。

このような計算を行わないでも、本問題は解くことができます。コードを読み解いて「文字Aの1つ次の文字」と理解すれば、『B』という答えを導き出せます。

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

// 参考コード

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

// 問題
console.log(toChar(toCode(“A”) + 1));

// 出力結果
B

問題2

// 問題
toChar(toCode(“Z”) + 7)

// 選択肢
a
S
s

仮想コードの実行結果を順番に見ていきましょう。

toChar(toCode(“Z”) + 7) …… 「Z」の文字コードは「90」。
→ toChar(90 + 7) …… 「90 + 7」は「97」。
toChar(97) …… 文字コード「97」の文字は「a」。
a

そのため答えは、1番目の選択肢の『a』になります。

このような計算を行わないでも、この問題は消去法で解くことができます。

「Zから7文字先」の文字は、「S」でも「s」でもありません。ASCIIコードでは、大文字のアルファベット、小文字のアルファベットの1セットは、A~Z、a~zと順番に、文字コードが割り当てられています。

実際には、大文字のアルファベットが「Z」で終わったあと、何文字かアルファベット以外の文字が続き、その後、小文字のアルファベットが「a」から始まります。ここでは選択肢から、小文字の『a』が答えであることが分かります。

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

// 参考コード

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

// 問題
console.log(toChar(toCode(“Z”) + 7));

// 出力結果
a

問題3

// 問題
toChar(toCode(“Z”) + 7 + 26)

// 選択肢
z
a
{

仮想コードの実行結果を順番に見ていきましょう。

toChar(toCode(“Z”) + 7 + 26) …… 「Z」の文字コードは「90」。
→ toChar(90 + 7 + 26) …… 「90 + 7 + 26」は「123」。
toChar(123) …… 文字コード「123」の文字は「{」。
a

そのため答えは、3番目の選択肢の『{』になります。

このような計算を行わないでも、この問題は「問題2」をヒントとして、消去法で解くことができます。

まず、問題2から「toChar(toCode(“Z”) + 7)」の答えが「a」であることが分かっています。そのため、問題3「toChar(toCode(“Z”) + 7 + 26)」の答えは、「a」ではないことが分かります。

そうなると「z」と「{」のどちらかになります。どちらか選択するポイントは、「+ 26」になります。アルファベットは26文字あります。そのため、「a」の26文字先は「zの次の文字」になります。「z」ではありません。「z」は「25文字先」の文字です。

というわけで「z」でもないことが分かります。そのため消去法で「{」が答えだと分かります。

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

// 参考コード

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

// 問題
console.log(toChar(toCode(“Z”) + 7 + 26));

// 出力結果
{

CodeIQ運営事務局より

柳井さん、ありがとうございました!
柳井さんの次の問題にご期待ください!

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

TOP