大学入学共通テスト(数学) 過去問
令和4年度(2022年度)本試験
問166 (情報関係基礎(第3問) 問9)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

大学入学共通テスト(数学)試験 令和4年度(2022年度)本試験 問166(情報関係基礎(第3問) 問9) (訂正依頼・報告はこちら)

Kさんは、あみだくじを表示するプログラムを作ろうと考えた。どの文字も同じ幅で表示されることを仮定して、記号の「┃」・「┣」・「┫」という文字と改行を使うことにした。文字の左右および行間に隙間のない表示をすれば、これらの記号がつながって、あみだくじの線に見える。
あみだくじには縦線が2本以上、横線が1本以上ある。プログラムを簡単にするため、横線は隣り合う縦線の間のみを結ぶとし、一つの行にはちょうど1本だけ横線があるとした。
例えば、縦線が3本で横線が4本であるあみだくじを、図1のように4行で表示する。この図で点線は文字の枠を示しており、各行の右端で改行している。このあみだくじの一番上の横線は左から2本目と3本目の縦線を結んでおり、「┃」・「┣」・「┫」と改行をこの順に表示することで1行目を出力できる。上から2番目の横線は左から1本目と2本目の縦線を結んでおり、1行目の表示に続けて「┣」・「┫」・「┃」と改行をこの順に表示することで2行目を出力できる。3行目と4行目も同様である。

次の文章を読み、空欄( ケ )に入れるのに最も適当なものを、後の解答群のうちから一つ選べ。

Kさんは次に、あみだくじを引いた結果をコンピュータで求めることを考えた。まず、あみだくじの縦線のそれぞれの上端にコマを置く。コマを区別するため、それぞれに番号をつけておく。すべてのコマを同時に、縦線に沿って下に移動していき、横線があったら、横線がつなぐ二つの縦線の上にあるコマを入れ替えれば、あみだくじの結果を求めることができる(図3)。

コマの番号を順番に格納した配列Komaが与えられ、Komaには最初、あみだくじの上端に置くコマの番号が左から順に格納されているものとする。すなわち、Komaの要素数とあみだくじの縦線の本数は等しい。
できた手続きを図5~7に示す。ここで用いている関数「要素数」はあらかじめ用意されたもので、配列を与えるとその要素数を返す。例えばKomaが[1,2,3]のとき、要素数(Koma)は3を返す。図6と図7はここで用いる新しい関数の定義である。関数を定義するときは、「関数」というキーワードと空白に続いて、関数名と、()でくくられた引数列を書き、「を」と「と定義する」までの間に関数の本体を書く。関数を呼び出すときは、関数名に続けて引数列を()でくくって書く。例えば、図5の(01)行目は関数「配列を表示する」を呼び出しており、これを実行すると、図6の(02)~(05)行目が実行される。
図5では、まず図6で定義した関数「配列を表示する」を呼び出し、最初に与えられたKomaを表示する。次に図7で定義した関数「あみだくじを表示する」を呼び出す。ここでは[ カ ]の値がtateに格納されて、図2と同じ処理をすることであみだくじを表示する。図5の(03)~(07)行目では、コマを入れ替えることによって、あみだくじの結果を求めている。最後に(08)行目で再び関数「配列を表示する」を呼び出して結果を表示している(図4)。

図5あみだくじの結果を求める手続き

(01)配列を表示する(Koma)
(02)あみだくじを表示する([ カ ],Yokosen,要素数(Yokosen))
(03)yを1から要素数(Yokosen)まで1ずつ増やしながら、
(04)│  t←Koma[Yokosen[y]]
(05)│  ( キ )
(06)│  ( ク )
(07)を繰り返す
(08)配列を表示する(Koma)

図6関数「配列を表示する」の定義

(01)関数 配列を表示する(Koma)を
(02)│  jを1から要素数(Koma)まで1ずつ増やしながら、
(03)│  │  ( ケ )を改行なしで表示する
(04)│  を繰り返す
(05)│  改行を表示する
(06)と定義する

図7関数「あみだくじを表示する」の定義

(01)関数 あみだくじを表示する(tate,Yokosen,yoko)を
(02−15)│  (図2と同じ)
(16)と定義する

問題文の画像
  • 0
  • Koma[yoko]
  • 要素数(Yokosen)
  • j
  • Yokosen[j]
  • 要素数(Koma)
  • yoko
  • Koma[j]
  • 要素数(Koma)-j+1

次の問題へ

正解!素晴らしいです

残念...

この過去問の解説 (1件)

01

正解は「Koma[j]」です。

 

配列を表示するには、配列の中身を順番に全て取り出す必要があります。

 

問題文より、Komaには最初、コマの番号が左から順に格納されています。

また、「図5では、まず図6で定義した関数「配列を表示する」を呼び出し、最初に与えられたKomaを表示する。」とあるので、関数「配列を表示する」では配列の並びをそのまま表示していることが読み取れます。

 

図6の(02)で、jを1から要素数(Koma)まで1ずつ増やしているので、jを使えば配列の並びをそのまま左から順に表示できます。

表示する配列はKoma(引数列)なので、「Koma[j]」が解答になります。

選択肢1. 0

不適切です。

選択肢2. Koma[yoko]

不適切です。yokoはあみだくじの横線の本数であり変動しないので、配列の"yoko"番目の要素しか取り出せません。

選択肢3. 要素数(Yokosen)

不適切です。

選択肢4. j

不適切です。

選択肢5. Yokosen[j]

不適切です。Yokosenは横線の位置の情報を表す配列なので、コマの番号の並び順は表示できません。

選択肢6. 要素数(Koma)

不適切です。

選択肢7. yoko

不適切です。

選択肢8. Koma[j]

適切です。冒頭で説明したように、配列の並びをそのまま左から順に取り出すことができます。

選択肢9. 要素数(Koma)-j+1

不適切です。

まとめ

繰り返しの処理を利用して、配列の中身を順番に全て取り出す方法を考えましょう。

参考になった数0