今週の午後問題〔解答〕アルゴリズム 文字列の誤りの検出 2017 年度 秋期
error
この記事は基本情報技術者試験の旧制度( 2022 年以前)の記事です。
この記事の題材となっている「午後問題」は現在の試験制度では出題されません。 ご注意くださいませ。
このコーナーでは毎週月曜に午後の必須選択問題から 1 問ピックアップして出題し、 解答欄 を設け、読者の皆さまにも解答してもらっています!
今週の午後問題は「文字列の誤りの検出」でしたが、皆さん、手応えはいかがでしょうか?
金曜になりましたので、出題の 解答 と 矢沢久雄さんによる 解説 に加えて、皆さんの正解率を公開します。
今週の午後問題
2017 年度 秋期 文字列の誤りの検出
解答と解説
設問 1a
正解 エ
calcCheckCharacter 関数において、論理型の変数 is_even は、変数名から「偶数( even )であるか( is )」を意味していることがわかります。
is_even が空欄 a1 と等しいとき、単に文字の値を足す処理を行っています。説明文に
偶数番目の文字に割り当てた数値は、そのまま全て足し合わせる
とあるので、空欄 a1 は true です。
validateChackCharacter 関数において、論理型の変数 is_odd は、変数名から「奇数( odd )であるか( is )」を意味していることがわかります。
is_odd が空欄 a2 と等しいとき、単に文字の値を足す処理を行っています。説明文に
奇数番目の文字に割り当てた数値は、そのまま全て足し合わせる
とあるので、空欄 a2 は true です。
設問 1b
正解 ウ
空欄 b の前にある繰り返し処理で、変数 sum に、説明文の
03. 01 と 02 の結果を足し合わせる
の結果が得られます。
したがって、空欄 b は、説明文の
04. N から 、 03 で求めた総和を N で割った余りを引く。さらにその結果を、 N で割り、余りを求める
に該当します。
したがって、空欄 b は、 (N – sum % N) % N です。
設問 1c
正解 エ
変数 ret_value は、 validateCheckCharacter 関数の戻り値です。空欄 c の条件が true のとき、 ret_value に false が格納されています。
したがって、空欄 c には、検査文字付文字列に誤りがある条件が入ります。説明文に
04. 03 で求めた総和が N で割り切れる場合は、検査文字付文字列に誤りがないと判定する。 N で割り切れない場合は、検査文字付文字列に誤りがあると判定する
とあるので、空欄 c は、 sum % N ≠ 0 です。割り切れないことは、割り算の余りが 0 でないことで判断できます。
設問 2d
正解 オ
説明文に、
複数文字に誤りがある場合には、誤りがないと判定されることがある
とあるので、 ipa␣␣f に対して、複数文字に誤りがある api␣␣f (ケース 2 )、 pia␣␣f (ケース 3 )、 ␣␣apif (ケース 4 )を検証します。
- 文字
- 数値
- _
- 0
- i
- 12
- p
- 19
- a
- 4
- f
- 9
-
api␣␣f (ケース 2 )の検証
- f
- more_horiz9
- ␣
- more_horiz0 × 2 = 0 、 0 ÷ 30 = 0 あまり 0 、 0 + 0 = 0
- ␣
- more_horiz0
- i
- more_horiz12 × 2 = 24 、24 ÷ 30 = 0 あまり 24 、 0 + 24 = 24
- p
- more_horiz19
- a
- more_horiz4 × 2 = 8 、8 ÷ 30 = 0 あまり 8 、 0 + 8 = 8
すべてを足し合わせると、
9 + 0 + 0 + 24 + 19 + 8 = 60
60 は N = 30 で割り切れるので、誤りがあるのに、誤りがないと判断されます。
-
pia␣␣f (ケース 3 )の検証
- f
- more_horiz9
- ␣
- more_horiz0 × 2 = 0 、 0 ÷ 30 = 0 あまり 0 、 0 + 0 = 0
- ␣
- more_horiz0
- a
- more_horiz4 × 2 = 8 、 8 ÷ 30 = 0 あまり 8 、 0 + 8 = 8
- i
- more_horiz12
- p
- more_horiz19 × 2 = 38 、 38 ÷ 30 = 1 あまり 8 、 1 + 8 = 9
すべてを足し合わせると、
9 + 0 + 0 + 8 + 12 + 9 = 38
38 は N = 30 で割り切れないので、誤りがあると適切に判断されます。
-
␣␣apif (ケース 4 )の検証
- f
- more_horiz9
- i
- more_horiz12 × 2 = 24 、 24 ÷ 30 = 0 あまり 24 、 0 + 24 = 24
- p
- more_horiz19
- a
- more_horiz4 × 2 = 8 、 8 ÷ 30 = 0 あまり 8 、 0 + 8 = 8
- ␣
- more_horiz0
- ␣
- more_horiz0 × 2 = 0 、 0 ÷ 30 = 0 あまり 0 、 0 + 0 = 0
すべてを足し合わせると、
9 + 24 + 19 + 8 + 0 + 0 = 60
60 は N = 30 で割り切れるので、誤りがあるのに、誤りがないと判断されます。
したがって、誤りがあるのに誤りがないと判断されるのは、ケース 2 とケース 4 です(選択肢オ)。
設問 3e
正解 ウ
5 列目を縦に見た ␣s␣␣ という文字列の検査文字を求めます。
- ␣
- more_horiz0 × 2 = 0 、 0 ÷ 2 = 0 あまり 0 、 0 + 0 = 0
- ␣
- more_horiz0
- s
- more_horiz22 × 2 = 44 、 44 ÷ 30 = 1 あまり 14 、1 + 14 = 15
- ␣
- more_horiz0
すべてを足し合わせると、
0 + 15 + 0 + 0 = 15
30 から、 15 を 30 で割った余りの 15 を引くと、
30 – 15 = 15
この 15 を 30 で割った余りの 15 に対応する l (選択肢ウ)が検査文字になります。
設問 4f
正解 カ
表 4 のケースには、すべて 1 文字以上の誤りがあります。したがって、図 3 の 1 行目に、表 4 のどのケースを入れても、縦方向で 1 文字の誤りが生じる部分が 1 か所以上生じます。
関数 validateCheckCharacter は、誤りが 1 文字であれば、誤りを検出できます。そして、 1 つでも誤りがあると判定された場合は、検査文字列表に誤りがあると判定するのですから、検査文字付表に誤りがないと判定されるケースは、ありません(選択肢カ)。
みんなの解答
ご解答いただいた皆さん、ありがとうございました!
手応えはいかがでしたでしょうか?
なお、以下はこの問題の IPA の講評です。今後の参考になれば幸いです。
設問 1 では, a の正答率は低く,あまり理解されていなかった。プログラムの説明から, is_even の値及び is_odd の値と文字の順番との関係が理解できれば,正答できた。 b , c の正答率は平均的で,おおむね理解されていた。
設問 2 と設問 3 の正答率は平均的で,おおむね理解されていた。
設問 4 の正答率は低く,あまり理解されていなかった。いずれのケースでも, “ipa␣␣f” と文字が異なる列位置において,図 3 の縦方向の文字列は,図 2 の縦方向の検査文字付文字列に対して 1 文字誤りがある。このことが分かれば,正答できた。
実務において,文字列の誤りを検出するプログラムはよく利用されるが,誤りを検出できないケースがあることも理解しておいてほしい。このことを踏まえた上で,用途に応じて適切な検出プログラムを適用する能力が求められるので,身につけておいてほしい。
2022 年度 下期試験向け今週の午後問題はこれで終了です! この連載が過去問題に演習で使われることを願っています !!
label 関連タグ免除試験を受けた 74.9% の方が、 科目A免除資格を得ています。
今週の午後問題〔解答〕アルゴリズム 文字列の誤りの検出 2017 年度 秋期
update今週の午後問題〔問題〕アルゴリズム 文字列の誤りの検出 2017 年度 秋期
update今週の午後問題〔解答〕アルゴリズム ヒープの性質を利用したデータの整列 2018 年度 春期
update今週の午後問題〔問題〕アルゴリズム ヒープの性質を利用したデータの整列 2018 年度 春期
update今週の午後問題〔解答〕アルゴリズム 整数式の解析と計算 2018 年度 秋期
update今週の午後問題〔問題〕アルゴリズム 整数式の解析と計算 2018 年度 秋期
update今週の午後問題〔解答〕アルゴリズム ハフマン符号化を用いた文字列圧縮 2019 年度 春期
update今週の午後問題〔問題〕アルゴリズム ハフマン符号化を用いた文字列圧縮 2019 年度 春期
update今週の午後問題〔解答〕情報セキュリティ SSH による通信 2017 年度 秋期
update今週の午後問題〔問題〕情報セキュリティ SSH による通信 2017 年度 秋期
update- 基本情報技術者試験 の受験勉強をレポート頂ける方を募集中です!
- ツイッター で過去問を配信しています
姉妹サイト 「IT資格の歩き方」 では応用情報技術者以上の情報処理技術者試験の対策記事があります!
基本情報技術者試験を合格されたら、「IT資格の歩き方」で末永く、スキルアップにお役立てください!