1/17~18に行われた2026年度大学入学共通テスト。「情報Ⅰ」のプログラミング問題に、今年もIchigoJamで挑戦してみました。
今回は文化祭での来訪者の待ち時間・最適体験時間を算出する問題でした。難易度は高くないですが、現実にありそうな課題で興味深いです。
問2:各来訪者の待ち時間を求める

10 T=3 20 LET [1],0,3,4,10,11,12 30 K=6 40 LET [11],0,0,0,0,0,0 50 LET [21],0,0,0,0,0,0 60 [21]=T 70 FOR I=2 TO K 80 A=[19+I]:B=[I]:GSB @SAIDAI:[10+I]=R 90 [20+I]=[10+I]+T 100 ?I;"-WAIT: ";[10+I]-[I];"MIN." 105 NEXT 900 END 1000 @SAIDAI 1010 R=A 1020 IF B>R THEN R=B 1030 RTN
- 各行はBASIC流に10刻みに変更しています。元のプログラムに無い行は105行などに割り当てています。
- 通常変数は、アルファベット1文字に変換しています。
- 配列変数は、Touchakuを[1]~[6]、Kaishiを[11]~[16]、Shuryouを[21]~[26]に割り当てています。
- 最大値関数は、1000行以降のサブルーチンとして配置。ラベル「@SAIDAI」を使ってGSB(GOSUB)命令で呼び出しています。パラメータA,Bの2変数をセットして呼び出すと、最大値をRに返します。
問3:体験時間の変化による最大待ち時間を求める

10 LET [1],0,3,4,10,11,12 20 K=6 30 FOR T=1 TO 15 40 LET [11],0,0,0,0,0,0 50 LET [21],0,0,0,0,0,0 60 [21]=T 70 FOR I=2 TO K 80 A=[19+I]:B=[I]:GSB @SAIDAI:[10+I]=R 90 [20+I]=[10+I]+T 95 NEXT 100 S=0 110 FOR I=1 TO K 120 A=S:B=[10+I]-[I]:GSB @SAIDAI:S=R 125 NEXT 130 IF S<10 THEN ?"T=";T;"MIN.:";"MAX-WAIT ";S;"MIN." 145 NEXT 900 END 1000 @SAIDAI 1010 R=A 1020 IF B>R THEN R=B 1030 RTN
- 40~90行、1000行以降の最大値関数は、問2のプログラムと同じです。

