! SEND 9567 !+ MORE 1085 !------ ! MONEY 10652
DIM p(8) !文字SENDMORY ※異なる文字の数 MAT p=ZER
PUBLIC NUMERIC ANSWER_COUNT !解答数 LET ANSWER_COUNT=0
LET t0=TIME CALL perm(p,1) PRINT "計算時間=";TIME-t0
END
EXTERNAL SUB perm(p(), l) !nPr順列での数の組を生成する FOR j=0 TO 9 !0〜9の数字 FOR k=1 TO l-1 !重複なし ※文字が異なれば数字も異なる IF j=p(k) THEN EXIT FOR NEXT k IF k>l-1 THEN LET p(l)=j !仮に IF l=UBOUND(p) THEN !すべてが確定したら、式を検証する LET v1= p(1)*1000+p(2)*100+p(3)*10+p(4) ! SEND LET v2= p(5)*1000+p(6)*100+p(7)*10+p(2) ! MORE LET v3=p(5)*10000+p(6)*1000+p(3)*100+p(2)*10+p(8) !MONEY IF v1+v2=v3 THEN !式が成立するなら LET ANSWER_COUNT=ANSWER_COUNT+1 !解答数 PRINT ANSWER_COUNT PRINT USING " SEND ####":v1 !結果の表示 PRINT USING "+ MORE ####":v2 PRINT "-------" PRINT USING " MONEY #####":v3 PRINT END IF ELSE CALL perm(p,l+1) !次の文字へ END IF END IF NEXT j END SUB
!例1 !DIM p(7) !文字 ※異なる文字の数
!LET v1= p(1)*1000+p(2)*100+p(3)*10+p(4) ! BASE !LET v2= p(1)*1000+p(2)*100+p(5)*10+p(5) ! BALL !LET v3=p(6)*10000+p(2)*1000+p(7)*100+p(4)*10+p(3) !GAMES !IF v1+v2=v3 THEN !式の成立するなら ! LET ANSWER_COUNT=ANSWER_COUNT+1 !解答数 ! PRINT ANSWER_COUNT ! ! PRINT USING " BASE ####":v1 !結果の表示 ! PRINT USING "+ BALL ####":v2 ! PRINT "-------" ! PRINT USING " GAMES #####":v3 ! PRINT !END IF
!例2 !LET v1= p(1)*10000+p(2)*1000+p(2)*100+p(3)*10+p(4) ! WOODS !LET v2=p(5)*100000+p(2)*10000+p(6)*1000+p(7)*100+p(4)*10+p(8) !FOREST !IF v1+v1+v1=v2 THEN !式の成立するなら ! LET ANSWER_COUNT=ANSWER_COUNT+1 !解答数 ! PRINT ANSWER_COUNT ! ! PRINT USING " WOODS #####":v1 !結果の表示 ! PRINT USING " WOODS #####":v1 ! PRINT USING "+ WOODS #####":v1 ! PRINT "--------" ! PRINT USING " FOREST ######":v2 ! PRINT !END IF
|