擬似言語の問題は毎回2問くらい出ます。
一見難しそうですが、すべて難しい問題ばかりではないです。
むしろ、古い年度まで過去問題をたくさん解くよりも、擬似言語の解き方に慣れたほうが効率がいいかもしれません。
あきらめないで、解き方をトレースすることからはじめてみませんか?
目次
令和6年 問62
関数convertは、整数型の配列を一定のルールで文字列に変換するプログラムである。関数convert をconvert(arraylnput)として呼び出したときの戻り値が“AABAB”になる引数arraylnputの値はどれか。ここで、arrayInputの要素数は1以上とし、配列の要素番号は1から始まる。
ア {0、 0、 1、 2、 1}
イ {0、 1、 2、 1、 1}
ウ {1、 0、 1、 2、 0}
エ {1、 1、 2、 1、 0}
正解の理由(令和6年 問62)
関数 convert のイメージ
関数は、複数の処理を一つにまとめたものです。
自動販売機と対比すると、イメージしやすいと思います。
関数 convertの構成
プログラムは、次のような構成になっています。
整数型の配列 arraylnput を文字列 stringOutput に変換するルール
このプログラムの分岐処理部分に注目します。
上の分岐処理を具体的な数字で確認します。(示したのは一例です。好きな数字でかまいません)
i | arrayInput | 変換 | stringOutput |
1 | { 0 , 1 , 2 , □, △} | → | B |
2 | { 0 , 1 , 2 , □, △ } | → | BA |
3 | { 0 , 1 , 2 , □ , △ } | → | BAB |
戻り値 stringOutput が「AABAB」になる arrayInput のパターン
分岐処理が繰り返されて、戻り値 stringOutput が「AABAB」になる arrayInput のパターンを逆から考えます。
繰り返す度に文字が末尾に追加になるので、求める arrayInput のパターン は、次のようになります。
i | arrayInput | 変換 | stringOutput |
5 | { 1,1,1でない,1,1でない} | ← | AABAB |
選択肢のなかで、上のarrayInputのパターンと一致するのは、エ { 1 , 1 , 2 , 1 , 0 } だけです。
よって、正解は エ です。
コメント