『数学とBASIC』p7 の問題を解くプログラムを書いてみました。
問題 A, B, C, D, P, Q, R, S, W, X, Y, Z は(数学でいう)変数であるとする.式
(A + B + C + D) (P + Q + R + S) (W + X + Y + Z)
の括弧をはずした式を打ち出すプログラムを作れ.
load"q0 コマンドで作成したプログラム Q0.BAS を読み込んだあと、run コマンドで実行しています。
保存するときは、save"Q0",a のように a (ASCII) をしてしておくと、テキストになります。省略するとバイナリになってしまいます。
load"q0 Ok run (A+B+C+D)(P+Q+R+S)(W+X+Y+Z)= APW+APX+APY+APZ+AQW+AQX+AQY+AQZ+ARW+ARX+ARY+ARZ+ASW+ASX+ASY+ASZ+BPW+BPX+BPY+BPZ+ BQW+BQX+BQY+BQZ+BRW+BRX+BRY+BRZ+BSW+BSX+BSY+BSZ+CPW+CPX+CPY+CPZ+CQW+CQX+CQY+CQZ+ CRW+CRX+CRY+CRZ+CSW+CSX+CSY+CSZ+DPW+DPX+DPY+DPZ+DQW+DQX+DQY+DQZ+DRW+DRX+DRY+DRZ+ DSW+DSX+DSY+DSZ Ok
expand source をクリックするとソースを展開します。元に戻すにはブラウザの再読み込みボタンを押してください。
私(のんき)が書いたプログラムです。
T$(3) という配列を用意しました。項(term)の頭文字を取りました。FACTOR$ は因子(factor)の意味です。RENUM コマンドで 100から番号を振り直したのを思い出しました。
10 'QUESTION 0
20 DIM T$(3)
30 T$(1)="ABCD":T$(2)="PQRS":T$(3)="WXYZ"
40 FOR I=1 TO 3
50 FACTOR$="("
60 FOR J=1 TO 4
70 FACTOR$=FACTOR$+MID$(T$(I),J,1)
80 IF J<4 THEN FACTOR$=FACTOR$+"+"
90 NEXT J
100 FACTOR$=FACTOR$+")"
110 PRINT FACTOR$;
120 NEXT I
130 PRINT "="
140 FOR I=1 TO 4
150 FOR J=1 TO 4
160 FOR K=1 TO 4
170 PRINT MID$(T$(1),I,1)+MID$(T$(2),J,1)+MID$(T$(3),K,1);
180 IF (I<4) OR (J<4) OR (K<4) THEN PRINT "+";
190 NEXT K
200 NEXT J
210 NEXT I
220 PRINT ""
『数学とBASIC』p11にあった模範解答です。
NEXT コマンドは次の行に書かなければなりません。PRINT コマンドに何も指定しなくてもよかったんですね。END コマンドが書かれていました。
10 REM プログラム 1-1
20 DIM A$(3)
30 A$(1)="ABCD":A$(2)="PQRS":A$(3)="WXYZ"
40 FOR I=1 TO 3:PRINT "(";
50 FOR J=1 TO 4:PRINT MID$(A$(I),J,1);
60 IF J<4 THEN PRINT "+";:GOTO 80
70 PRINT ")";
80 NEXT J:NEXT I:PRINT "="
90 FOR I=1 TO 4:FOR J=1 TO 4:FOR K=1 TO 4
100 PRINT MID$(A$(1),I,1);
110 PRINT MID$(A$(2),J,1);
120 PRINT MID$(A$(3),K,1);
130 IF I*J*K<4 THEN PRINT "+";:NEXT K,J,I
140 PRINT
150 END