共通テスト(情報) 過去問
令和6年度(2024年度)追・試験
問37 (<旧課程>情報関係基礎(第3問) 問8)
問題文
Aさんはゲーム会社に勤務しており、複数のプレイヤーが参加するゲームでのプレイヤーの順番(以下、手番と呼ぶ。)を管理するプログラムを開発している。ここでは図1に示すように、「高橋」を先頭として「高橋」→「石村」→「天野」→「小池」→「渡辺」の順で時計回りに手番が進み、最後の「渡辺」の次は「高橋」に戻り、再び同じ順で手番が繰り返される例について考える。
このゲームでは、プレイヤーがゲームに新たに参加したり抜けたりすることがある。図3・図4は、図1で示した手番の並びでの例である。Aさんは、プレイヤーを手番の並びに追加する手続きを考えた。図3では、「高橋」と「石村」の間に「三田」が新たに追加されている。この場合、「三田」の次のプレイヤーは「高橋」の次のプレイヤーである( オ )になり、「高橋」の次のプレイヤーは( カ )になる。つまり、あるプレイヤー(行番号x)の次に新たなプレイヤー(行番号tuika)を追加する手順は、図5のように、配列Playerにおいてそれぞれの列2の値を変更する手続きになる。(03)行目ではゲームの参加者数nの値を変更している。
図5 プレイヤーを手番の並びに追加する手続き
(01)Player[tuika,2]←( キ )
(02)Player[x,2]←( ク )
(03)n←( ケ )
( ク )にあてはまるものを1つ選べ。
付箋
付箋は自分だけが見れます(非公開です)。
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
共通テスト(情報)試験 令和6年度(2024年度)追・試験 問37(<旧課程>情報関係基礎(第3問) 問8) (訂正依頼・報告はこちら)
Aさんはゲーム会社に勤務しており、複数のプレイヤーが参加するゲームでのプレイヤーの順番(以下、手番と呼ぶ。)を管理するプログラムを開発している。ここでは図1に示すように、「高橋」を先頭として「高橋」→「石村」→「天野」→「小池」→「渡辺」の順で時計回りに手番が進み、最後の「渡辺」の次は「高橋」に戻り、再び同じ順で手番が繰り返される例について考える。
このゲームでは、プレイヤーがゲームに新たに参加したり抜けたりすることがある。図3・図4は、図1で示した手番の並びでの例である。Aさんは、プレイヤーを手番の並びに追加する手続きを考えた。図3では、「高橋」と「石村」の間に「三田」が新たに追加されている。この場合、「三田」の次のプレイヤーは「高橋」の次のプレイヤーである( オ )になり、「高橋」の次のプレイヤーは( カ )になる。つまり、あるプレイヤー(行番号x)の次に新たなプレイヤー(行番号tuika)を追加する手順は、図5のように、配列Playerにおいてそれぞれの列2の値を変更する手続きになる。(03)行目ではゲームの参加者数nの値を変更している。
図5 プレイヤーを手番の並びに追加する手続き
(01)Player[tuika,2]←( キ )
(02)Player[x,2]←( ク )
(03)n←( ケ )
( ク )にあてはまるものを1つ選べ。
- Player[x,2]
- Player[nuke,2]
- Player[tuika,2]
- n
- n+1
- n−1
- tuika
- tuika+1
- tuika−1
- nuke
- nuke+1
- nuke−1
正解!素晴らしいです
残念...
画像拡大
この過去問の解説 (3件)
01
新たなプレイヤーを手番に追加するときの手続きを、プログラムとして表す問題です。
「高橋」と「石村」の間に、「三田」を新たに追加するときに、手番を管理するデータ(表1)を変更する必要があります。それを手続きとして表さなければなりません。
(以下の表で、「三田」を追加前と追加後に分けて、便宜的に(表A)と (表B)としました)
(Ⅰ)新たに追加するプレイヤー(「三田」)のデータを、これまでの(表1)の最後の行に、行番号を「tuika」として新たに追加します。そのとき、「三田」の次のプレイヤーは「石村」になるので、その行番号「3」が、「三田」のデータがある行の2列目に入ります。
(図5)の(01)でこの手続きを表していますが、三田の次のプレイヤーである「石村」の行番号「3」はもともと「高橋」(行番号を「X」としています)の2列目にあったデータで、player[X ,2]と表すことができ、また新しく追加した「三田」のデータ(行番号は「tuika」)の中で次のプレイヤーのデータはplayer[tuika ,2]と表されます。よって、(図5)の(01)行の手続きは
(01)player[tuika ,2] ← player[X ,2]
となります。
(Ⅱ)新たに追加したプレイヤー(「三田」)の前のプレイヤー(「高橋」)の行の2列目(次のプレイヤー)を、新たに追加したプレイヤー(「三田」)の行番号に変更しなければなりません。
(図5)の(02)はこの手続きを表していますが、「高橋」の行の2列目はplayer[X ,2]で、ここが新たに追加したプレイヤー(「三田」)の行番号「tuika」が入るので、
(02)player[X ,2] ← tuika
となります。
(Ⅲ)(図5)の(03)行は、問題文にもあるように、ゲームの参加者数nの値を変更する手続きです。人数が一人増えて参加者数は n+1 となったので、
(03) n ← n+1
となります。
以上より、解答欄(ク)には、「tuika」の選択肢の番号が入ります。
この問題では、プレイヤーの順番を番号で直接指定するのではなく、次のプレイヤーのデータがある場所を指定することで実現しています。(これを「ポインタ」といいます)
このような場合、追加したデータと追加する一つ前のデータに対して、ポインタを書き換える(設定する)必要があります。
参考になった数0
この解説の修正を提案する
02
( ク )では、行番号xのプレイヤーの次のプレイヤーの行番号を選択します。
「高橋」の行番号をx、「三田」の行番号をtuikaとすると、「高橋」(行番号x)の次のプレイヤーは「三田」(行番号tuika)なので、
(02)Player[x,2]←クtuika
となります。
参考になった数0
この解説の修正を提案する
03
この問題で覚えておくべきポイントは以下の通りです。
あるプレイヤー(行番号x)の次に、
新たなプレイヤー(行番号tuika)を追加する手順(02)を確認します。
図3より「高橋」の次に、
新たなプレイヤー「三田」を追加した場合、
「高橋」の次のプレイヤーの行番号は、
新たなプレイヤー「三田」の行番号を指すことになります。
このことより、
Player[x,2]には、
新たなプレイヤーである行番号、
tuikaが格納されます。
正解
冒頭の説明の通り、
Player[x,2]には、
新たなプレイヤーである行番号、
tuikaが格納されます。
参考になった数0
この解説の修正を提案する
前の問題(問36)へ
令和6年度(2024年度)追・試験 問題一覧
次の問題(問38)へ