2.数字の順番の組合せ
Y(24,4)の順番に従って、M(24,4)へ入力された数字を入れていく。
例えば、入力された数字が3,4,5,6ならば、
Y(1,1-4)に1,2,3,4が入っているから、M(1,1-4)にはそのまま3,4,5,6が、次のY(2,1-4)に1,2,4,3が入っているから、M(2,1-4)には3,4,6,5が入る。
このように、最後のM(24,1-4)には6,5,4,3が入る。
そして、入力された4つの数字の中に同じ数字が入っていたら、同じ順番の数字の組合せがあるので、それを除く。M(*,1)に-1を入力して。
3.式の準備
2.で4つの数字の順番を24通り決めた。その4つの数字の間の計算をここで決める。4つの演算があるし3箇所演算記号を入れるので4*4*4=64通りある。
例えば3,4,5,6ならば、3+4+5+6、3+4+5-6から3/4/5/6まで決め、A(64,8)に入れる。A(*,1)・・3(最初の数) A(*,2)・・”+”
A(*,3)・・4(2番目の数) A(*,4)・・”+”
・・・
A(*,7)・・6(最後の数) A(*,8)・・常に0
4.計算結果の判定出力
計算結果が10になれば、どの計算順序かによって出力する。
1+(1/9))*9が正確に10にならないので9.999以上10.0001以下を10としている。
5.計算
計算をする。0での除法は計算結果を0として進める。
次に、前につめる。例えば A(*,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8
3 + 4 + 5 + 6 0
前から順番に計算する場合は 7 + 5 + 6 0 0 0
12 + 6 0 0 0 0 0
最後は 18 0 0 0 0 0 0 0
となる。
A メインルーチンの説明
4つの数字を入力し、数字の順番の組合せを決め、その24回を繰り返す。
前計算した数字の組と同じなら次の組合せに行く。
数字の3つの間に演算記号を入れる。その64回を繰り返す。
どの2つの数字から計算するかの5つの場合を繰り返す。
その演算の順番に従って、3回計算をして答えを出す。
その式の答えを10であるか判定し、よければ出力する。
B 変数一覧表
Y(24,4) 4つの数字の順番 24通り
E(5,3) 計算の順番 5通り 3+4+5+6で
前から順に @ 7 +5+6
12 +6
計算をしたら前へつめるので 2,2,2となる。
2番目ばかりを計算していればよい。
中>前>後ろ A 3+9 +6
12 +6
同様に4,2,2となる。
前の2つと後ろの2つからB 7 +11
同様に2,4,2となる。
中>後ろ>前 C 3+9 +6
3+15
同様に4,4,2となる。
後ろから順に D 3+4+11
3+15
同様に6,4,2となる。
F$(3) 演算記号 4種類
P$(5) 計算の順番を分かるように括弧を使った文字列。
print using文で使う。
N(4) 入力した4つの数字
M(24,4) Y(24,4)の順番に従って、入力した4つの数字を並び直したもの。24通りになる。
A(64,8) M(24,4)の24通りの1つずつについて、演算記号を数の間に入れた式。64通りある。
B(8) A(*,8)を入れて、計算用の配列
X 何番目の演算をするのか@−C
H,I,J,K,L・・・ループ変数