SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

2026年度大学入学共通テスト「情報Ⅰ」プログラミング問題

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のプログラムと同じです。

人間っぽくよけるかわくだりデモ2

★この記事は「IchigoJam Advent Calendar 2025」に登録しています。

3年前に「人間っぽくよけるかわくだりデモ」プログラムを作ったのですが、ちょっと改造して、時々ミスするようにしました。
プレイ動画はこちら。

www.youtube.com

  • 岩が来るまではまっすぐ進みます。
  • 岩に当たりそうになると左右によけます。が、時々ミスします。
  • しばらく左右に進むとまっすぐに戻ります。

プログラムリスト

10 CLS:CLT:X=16:D=0
20 X=X-D:D=(RND(9)-4)/4
30 IF D && !RND(4) D=0
40 X=X+D:X=X&31
50 IF SCR(X,5) IF RND(10) GOTO 20 ELSE ?TICK()/60:END
60 LC X,5:?"O"
70 WAIT 3
80 Z=RND(32):LC Z,23:?"*";
90 IF Z<31 ?
100 GOTO 30

クリスマスくだり

★この記事は「IchigoJam Advent Calendar 2025」に登録しています。

皆さんおなじみ「かわくだり」のクリスマスバージョンです。

遊び方

  • 下から流れてくる岩は「X」「M」「A」「S」の4種類です。
  • スタート時は自キャラが「X」です。次のキャラ「M」を取りに行ってください。それ以外のキャラに当たるとゲームオーバーです。
  • 「M」を取ると自キャラが「M」に変わります。次は「A」を取りに行ってください。
  • X→M→A→Sと変化させて、再びXに戻るとスコアが1点増えます。スコアは画面左上に表示されます。

プログラム

10 'XMAS KUDARI
20 CLV:CLS:X=16:P="XMAS"
30 E=PEEK(P+(C+1)&3)
40 LC X,5:?STR$(P+C,1)
50 LC RND(32),23:?STR$(P+RND(4),1)
60 LC 0:?T
70 WAIT 3
80 X=X-BTN(28)+BTN(29)
90 X=X&31
100 S=SCR(X,5)
110 IF !S GOTO 40
120 IF S!=E END
130 C=C+1:IF C=4 C=0:T=T+1
140 GOTO 30