大学入学共通テスト(情報) 過去問
令和6年度(2024年度)追・試験
問43 (<旧課程>情報関係基礎(第3問) 問14)
問題文
Aさんはゲーム会社に勤務しており、複数のプレイヤーが参加するゲームでのプレイヤーの順番(以下、手番と呼ぶ。)を管理するプログラムを開発している。ここでは図1に示すように、「高橋」を先頭として「高橋」→「石村」→「天野」→「小池」→「渡辺」の順で時計回りに手番が進み、最後の「渡辺」の次は「高橋」に戻り、再び同じ順で手番が繰り返される例について考える。
Aさんは、各プレイヤーの前の手番にいるプレイヤーを事前にすべて求めておけば、プレイヤーが手番の並びから抜ける手続きが簡素になると考えた。図7は、図1に「前のプレイヤー」を指し示す白矢印を追記した図である。表2は、図7の白矢印の情報を管理できるように、表1に「前のプレイヤー」の行番号を管理する列3を追加したものである。「高橋」を例にすると、「高橋」の前のプレイヤーは「渡辺」なので、表2において「高橋」の行の列3は4になる。同様に、「石村」と「渡辺」の行の列3は、それぞれ( セ )、( ソ )となる。なお、設問の都合により、表2の一部は値を「?」で隠している。
表2も2次元配列Playerで扱うことができる。「高橋」を例にすると、「高橋」の前のプレイヤーの行番号は4であることから、Player[( タ ),( チ )]に4を格納する。
Aさんは、列2の値をもとに列3の値を自動的に求める手続きを作成した。図8では、図2と同様に変数pを用いて先頭の行番号(変数sento)からn人分まで手番の並びをたどりながら、(03)行目で変数qに「次のプレイヤー」の行番号を格納し、(04)行目で「次のプレイヤー」の列3に現在のプレイヤーの行番号を格納している。なお、現在のプレイヤーとは、変数pを用いてたどっている手番のプレイヤーである。
最後にAさんは、表2の情報を用いて任意のプレイヤー(行番号nuke)が手番の並びから抜ける手続きを、図9のように考えた。(01)行目では変数maeに抜けるプレイヤーの前にいるプレイヤーの行番号を、(02)行目では変数tugiに抜けるプレイヤーの次のプレイヤーの行番号を、それぞれ格納している。(03)~(04)行目では、プレイヤーが抜けた後の手番の並びになるように、これらの変数の値を配列Playerに格納している。(05)行目ではゲームの参加者数nの値を変更している。なお、問2と同様、先頭のプレイヤーが抜けた場合の処理は省略している。
図8 列3の値を求める手続き
(01)p←sento
(02)iを1からnまで1ずつ増やしながら,
(03)¦q←( ツ )
(04)¦Player[q,3]←( テ )
(05)¦p←( エ )
(06)を繰り返す
図9 表2の情報を用いて手番の並びからプレイヤーが抜ける手続き
(01)mae←Player[nuke,3]
(02)tugi←Player[nuke,2]
(03)( ト )←tugi
(04)( ナ )←mae
(05)n←( ス )
( セ )、( ソ )にあてはまるものを1つ選べ。
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
大学入学共通テスト(情報)試験 令和6年度(2024年度)追・試験 問43(<旧課程>情報関係基礎(第3問) 問14) (訂正依頼・報告はこちら)
Aさんはゲーム会社に勤務しており、複数のプレイヤーが参加するゲームでのプレイヤーの順番(以下、手番と呼ぶ。)を管理するプログラムを開発している。ここでは図1に示すように、「高橋」を先頭として「高橋」→「石村」→「天野」→「小池」→「渡辺」の順で時計回りに手番が進み、最後の「渡辺」の次は「高橋」に戻り、再び同じ順で手番が繰り返される例について考える。
Aさんは、各プレイヤーの前の手番にいるプレイヤーを事前にすべて求めておけば、プレイヤーが手番の並びから抜ける手続きが簡素になると考えた。図7は、図1に「前のプレイヤー」を指し示す白矢印を追記した図である。表2は、図7の白矢印の情報を管理できるように、表1に「前のプレイヤー」の行番号を管理する列3を追加したものである。「高橋」を例にすると、「高橋」の前のプレイヤーは「渡辺」なので、表2において「高橋」の行の列3は4になる。同様に、「石村」と「渡辺」の行の列3は、それぞれ( セ )、( ソ )となる。なお、設問の都合により、表2の一部は値を「?」で隠している。
表2も2次元配列Playerで扱うことができる。「高橋」を例にすると、「高橋」の前のプレイヤーの行番号は4であることから、Player[( タ ),( チ )]に4を格納する。
Aさんは、列2の値をもとに列3の値を自動的に求める手続きを作成した。図8では、図2と同様に変数pを用いて先頭の行番号(変数sento)からn人分まで手番の並びをたどりながら、(03)行目で変数qに「次のプレイヤー」の行番号を格納し、(04)行目で「次のプレイヤー」の列3に現在のプレイヤーの行番号を格納している。なお、現在のプレイヤーとは、変数pを用いてたどっている手番のプレイヤーである。
最後にAさんは、表2の情報を用いて任意のプレイヤー(行番号nuke)が手番の並びから抜ける手続きを、図9のように考えた。(01)行目では変数maeに抜けるプレイヤーの前にいるプレイヤーの行番号を、(02)行目では変数tugiに抜けるプレイヤーの次のプレイヤーの行番号を、それぞれ格納している。(03)~(04)行目では、プレイヤーが抜けた後の手番の並びになるように、これらの変数の値を配列Playerに格納している。(05)行目ではゲームの参加者数nの値を変更している。なお、問2と同様、先頭のプレイヤーが抜けた場合の処理は省略している。
図8 列3の値を求める手続き
(01)p←sento
(02)iを1からnまで1ずつ増やしながら,
(03)¦q←( ツ )
(04)¦Player[q,3]←( テ )
(05)¦p←( エ )
(06)を繰り返す
図9 表2の情報を用いて手番の並びからプレイヤーが抜ける手続き
(01)mae←Player[nuke,3]
(02)tugi←Player[nuke,2]
(03)( ト )←tugi
(04)( ナ )←mae
(05)n←( ス )
( セ )、( ソ )にあてはまるものを1つ選べ。
- セ:1 ソ:5
- セ:2 ソ:4
- セ:3 ソ:3
- セ:4 ソ:2
- セ:5 ソ:1
- セ:1 ソ:2
- セ:2 ソ:3
- セ:3 ソ:4
- セ:4 ソ:5
正解!素晴らしいです
残念...
この過去問の解説 (1件)
01
この問題で覚えておくべきポイントは以下の通りです。
図7より、
「石村」と「渡辺」の前のプレイヤーを確認しますと、
「石村」の前のプレイヤーは、
「高橋」、
「渡辺」の前のプレイヤーは、
「小池」であることがわかります。
このことより、
「石村」の列3に入る行番号は、
「高橋」の行番号である「5」、
「渡辺」の列3に入る行番号は、
「小池」の行番号である「1」
であることがわかります。
正解
冒頭の説明の通り、
「石村」の列3に入る行番号は、
「高橋」の行番号である「5」、
「渡辺」の列3に入る行番号は、
「小池」の行番号である「1」
です。
参考になった数0
この解説の修正を提案する
前の問題(問42)へ
令和6年度(2024年度)追・試験 問題一覧
次の問題(問44)へ