大学入学共通テスト(情報) 過去問
令和5年度(2023年度)本試験
問41 (<旧課程>情報関係基礎(第3問) 問9)

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

問題

大学入学共通テスト(情報)試験 令和5年度(2023年度)本試験 問41(<旧課程>情報関係基礎(第3問) 問9) (訂正依頼・報告はこちら)

次の文章を読み、問いに答えよ。

Aさんは、天井から地上まで吊り下げられたロープをキャラクターに順次飛び移らせてゴールを目指すゲーム(図1)を遊んでいる。ロープは全部で11本あり、一列に並んでいる。ゲームはキャラクターが1本目のロープの高さ55mの地点にいる状況から始まり、11本目のロープの高さ0mの地点がゴールである。キャラクターができることは、ロープを降りることと、同じ高さのまま次のロープに飛び移ることの二つのみであり、ロープを登ったり、前のロープに戻ったりすることはできない。各ロープには1か所ずつリボンが巻かれており、キャラクターがこのリボンに触れるたびに得点を1点獲得できる。各ロープにリボンが巻かれている高さ(以下、リボンの高さと呼ぶ。)はあらかじめ決まっており、表1のとおりとなっている。ゴールに到達して最後のリボンの得点を加えたゲーム終了時の得点をできるだけ高くするため、Aさんは手続きを作成して、どのようにキャラクターを動かしたらよいか検討することにした。

(1)Aさんは手始めとして、全部で11本のロープで合計55m降りるのだから、各ロープを5mずつ降りるという動かし方を考えた。このゲームはロープの降り始めや降り終わりでもリボンに触れたとみなすので、1本目のロープで55mから50mまで降りるときは、55mの高さのリボンに触れたこととなり、1点獲得できる。2本目では50mから45mまで降りるが、ここではリボンに触れない。また、6本目では( アイ )mから( ウエ )mまで降りるが、ここでもリボンに触れない。
この動かし方での得点を求めるためにAさんが作成した手続きが図2である。なお、各ロープにおけるリボンの高さは配列Ribonに格納されており、Ribon[i]はi本目のロープのリボンの高さを表す。また、変数tokutenには得点を、変数takasaにはキャラクターが今いる高さを格納する。手続きを実行し、ゲーム終了時の得点は( キ )点であることがわかった。

図2 5mずつ降りるときの得点を求める手続き

(01)tokuten←0
(02)takasa←55
(03)iを1から11まで1ずつ増やしながら,
(04)│ もし( オ )ならば
(05)│  │ tokuten←tokuten+1
(06)│ を実行する
(07)│ takasa←( カ )
(08)を繰り返す
(09)「得点は」とtokutenと「点」を表示する

(2)Aさんは、(1)の動かし方では1本目のロープでリボンに触れた後に5m降りたことで、2本目のロープのリボンに触れ損ねて損をしていることに気がついた。そこでAさんは毎回5m降りるという動かし方をやめ、次の新しい動かし方を考えた。

【新しい動かし方】
キャラクターが今いるロープでリボンに触れることができるときは、リボンの高さまで降りてリボンに触れた後に次のロープに飛び移る。そうでないときは、ロープを降りずにそのまま次のロープに飛び移る。これを最後のロープまで順次繰り返す。
この動かし方での得点を求めるために作成した手続きが図3である。

図3 新しい動かし方での得点を求める手続き

(01)tokuten←0
(02)takasa←55
(03)iを1から11まで1ずつ増やしながら,
(04)│ もし( ク )ならば
(05)│  │ tokuten←tokuten+1
(06)│  │ takasa←( ケ )
(07)│ を実行する
(08)を繰り返す
(09)「得点は」とtokutenと「点」を表示する

手続きの流れを確認するため、表2を用意して、図3の(07)行目の直後におけるi,tokuten,takasaの値を記録した。その結果、i=4のときのtokutenの値は( コ )、takasaの値は( サシ )であった。手続きを実行し、ゲーム終了時の得点は( ス )点であることがわかった。
表2を眺めていてAさんは、あるロープで降りすぎると、その後の複数のロープのリボンに触れ損ねて損をすることがあると気がついた。そこで、新たに定数GENDO(単位はm)を導入し、リボンに触れるためにGENDOm以上降りる必要があるときはロープを降りずにそのまま次のロープに飛び移るように動かし方を改めることにした。ただし、最後のロープではリボンの高さである0mまで必ず降りることとする。試しにAさんはGENDOの値を20としたうえで、図3の(04)行目の( ク )を( セ )と書き換えて手続きを実行した。その結果、ゲーム終了時の得点は( ソ )点となることがわかった。

( サシ )にあてはまるものを次のうちから1つ選べ。

問題文の画像
  • 21
  • 31
  • 41
  • 51

次の問題へ

正解!素晴らしいです

残念...

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

01

(01)tokuten←0
(02)takasa←55
(03)iを1から11まで1ずつ増やしながら,
(04)│ もしRibon[i]takasaならば
(05)│  │ tokuten←tokuten+1
(06)│  │ takasa←Ribon[i]
(07)│ を実行する
(08)を繰り返す
(09)「得点は」とtokutenと「点」を表示する

 

i=2のとき、tokuten=2、takasa=Ribon[2]=53

 

i=3のとき、
(04)│ もしRibon[3](=31)≦takasa(=53)ならば
(05)│  │ tokuten←tokuten+1(=3)
(06)│  │ takasa←Ribon[3](=31
(07)│ を実行する

 

i=4のとき、
(04)│ もしRibon[4](=37)≦takasa(=31)ならば
この条件が偽となるので、(05)(06)は実行されません。
 

図3の(07)行目の直後におけるtakasaの値はサシ31です。

参考になった数0

02

「新しい動かし方」の手続き(図3)に従い、表2の続きを順に埋めていきます。

i1234567891011
Ribon[i]555331373722131925160
tokuten1233       
takasa55533131       

キャラクターが今いるロープでリボンに触れることができる条件は、「現在の高さ takasa≧ リボンの高さ Ribon[i]」であるときです。この条件を満たす場合、リボンの高さまで降りて 得点(tokuten) を加算し、キャラクターの高さ(takasa) を Ribon[i] の値に更新します。

 

i=2のとき ( takasa=55, tokuten=1 ) 

   55≧53(Ribon[2])より、リボンに触れることができるため、リボンの高さまで下りてから、次のロープに飛び移ります。

   高さ、得点はそれぞれ、 takasa=53 , tokuten=2 に更新されます。

 

i=3のとき ( takasa=53, tokuten=2 )

   53≧31(Ribon[3])より、リボンに触れることができるため、リボンの高さまで下りてから、次のロープに飛び移ります。

   高さ、得点はそれぞれ、 takasa=31, tokuten = 3 に更新されます。

 

i=4のとき ( takasa=31, tokuten=3 ) 

  31<37(Ribon[4])のため、降りずに次のロープに飛び移ります。

  高さ、得点はそれぞれ、 takasa=31, tokuten = 3 のまま維持されます。

 

 

以上の結果より、i = 4 のときの takasa は 31 となります。

参考になった数0

03

i=3 のときには、

takasa= 55

Ribon[3] = 31 条件は Ribon[i] < takasa なので

触れる → 得点 +1 → tokuten=3

となります。

参考になった数0