式の展開

『数学と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 をクリックするとソースを展開します。元に戻すにはブラウザの再読み込みボタンを押してください。


Q0.BAS

私(のんき)が書いたプログラムです。

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 ""

P1-1.BAS

『数学とBASIC』p11にあった模範解答です。

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

Copyright © 2020 たかはしのんき. All rights reserved.