SHIROのIchigoJam日記

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

2進数そろばん

Facebookの「IchigoJam-FAN」グループで、2進数を表示するそろばんプログラムを公開された方がいたので、私もIchigoJamで作ってみました。
珠をパチパチ動かすとなかなか面白いです(^_^)

使い方

  • プログラムを実行すると、8桁のそろばんが表示されます。それぞれ2進数の桁になっていて、下に2進数・10進数・16進数の数字が表示されます。
  • カーソルキーの左←右→でカーソルが左右に動きます。スペースキーを押すと、その桁の珠が上下に動いて0と1が切り替わります。
  • そろばんの下の2進数・10進数・16進数が、そろばんを動かすとどんな値になるか、観察してみてください。

プログラム

10 '*BIN SOROBAN
20 CLV:VIDEO 3
30 GSB @SOROBAN
40 @LOOP
50 LC 7-B,4-[B],1
60 K=INKEY()
70 IF !K GOTO @LOOP
80 B=B+(K=28)*(B<7)-(K=29)*(B>0)
90 IF K=32 [B]=![B]:GSB @SOROBAN
100 GOTO @LOOP
110 @SOROBAN
120 CLS
130 ?"1"
140 ?"2631"
150 ?"84268421"
160 FOR J=7 TO 0 STEP -1
170 LC 7-J,3
180 IF [J] ?CHR$(233) ELSE ?CHR$(146)
190 LC 7-J,4
200 IF [J] ?CHR$(146) ELSE ?CHR$(233)
210 LC 7-J,5:?[J]
220 NEXT
230 LC 8,5:?"=";
240 M=1:Z=0
250 FOR J=0 TO 7
260 Z=Z+M*[J]
270 M=M<<1
280 NEXT
290 ?Z
300 ?CHR$(154,145,145,155,154,145,145,155)
310 ?"  ";HEX$(Z/16,1);"   ";HEX$(Z%16,1);" h"
320 RTN

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