大学入学共通テスト(数学) 過去問
令和6年度(2024年度)追・試験
問154 (情報関係基礎(第3問) 問15)
問題文
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年度)追・試験 問154(情報関係基礎(第3問) 問15) (訂正依頼・報告はこちら)
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つ選べ。
- タ:3 チ:5
- タ:4 チ:4
- タ:5 チ:3
- タ:3 チ:3
- タ:3 チ:4
- タ:4 チ:5
- タ:5 チ:5
正解!素晴らしいです
残念...
この過去問の解説
前の問題(問153)へ
令和6年度(2024年度)追・試験 問題一覧
次の問題(問155)へ