『数学と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