DECLARE FUNCTION PutComma$ (sn#) DECLARE FUNCTION Usd$ (n#, t$) DECLARE FUNCTION FileExist! (f$) DECLARE FUNCTION Factorial# (n!) 'DIM Usd$(5000) DIM Cnt AS DOUBLE CLS INPUT "Number of variable components"; n1: n1 = ABS(n1) INPUT "Number of Fixed components"; n2: n2 = ABS(n2) PRINT "Possible combinations: "; PutComma$(Factorial#(n1)) ff# = Factorial#(n1) DO FOR k = 1 TO CINT(n2 / 2) m$ = m$ + CHR$(k + (64)) NEXT k FOR g = 1 TO n1 RANDOMIZE TIMER v$ = CHR$(INT(RND * n1) + (65) + (CINT(n2 / 2))) IF INSTR(m$, v$) = 0 THEN m$ = m$ + v$: v$ = "" ELSE g = g - 1 NEXT g FOR k = 1 TO INT(n2 / 2) m$ = m$ + CHR$(k + (65) + n1) NEXT k 'FOR f = 0 TO Cnt IF FileExist("VMEM.TXT") = NOT (-1) THEN Fail = 0: GOTO 10 'IF Usd$(f, "") = m$ THEN fail = 1 OPEN "VMEM.TXT" FOR INPUT AS #1 DO UNTIL EOF(1) LINE INPUT #1, ag$ IF ag$ = m$ THEN Fail = 1: EXIT DO LOOP CLOSE 1 10 'NEXT f IF Fail = 0 THEN x$ = Usd$(Cnt, m$) Cnt = Cnt + 1 IF Cnt = ff# THEN msg$ = "- That's all of them according to my calcs." 'LPRINT m$; " Combo number: "; cnt;msg$ PRINT m$; " Combo number: "; Cnt; msg$ 'IF cnt MOD 25 = 0 THEN LOCATE 25, 1: PRINT "-=ð Press any key to continue ð=-"; : SLEEP 1: CLS ss = TIMER END IF m$ = "" Fail = 0 IF TIMER >= ss + 30 THEN PRINT "30 Seconds and still no more combonations": ss = TIMER IF TIMER >= ss + 240 THEN PRINT "4 minutes and no combination... quiting": END IF INKEY$ = CHR$(13) THEN KILL "VMEM.TXT": END LOOP FUNCTION Factorial# (n) mm# = n FOR q = n - 1 TO 1 STEP -1 mm# = mm# * q NEXT q Factorial# = mm# END FUNCTION FUNCTION FileExist (f$) OPEN f$ FOR RANDOM AS #1 IF LOF(1) = 0 THEN FileExist = 1 ELSE FileExist = -1 CLOSE 1 END FUNCTION FUNCTION PutComma$ (sn#) un$ = LTRIM$(RTRIM$(STR$(sn#))) FOR q = LEN(un$) TO 1 STEP -1 cq = cq + 1 m$ = MID$(un$, q, 1) + m$ IF cq MOD 3 = 0 AND q > 1 THEN m$ = "," + m$ NEXT q PutComma$ = m$ END FUNCTION FUNCTION Usd$ (n#, t$) IF t$ <> "" THEN OPEN "VMEM.TXT" FOR APPEND AS #1: PRINT #1, t$: CLOSE 1: EXIT FUNCTION ELSE OPEN "VMEM.TXT" FOR INPUT AS #1 FOR mn# = 1 TO n# LINE INPUT #1, nth$ NEXT mn# LINE INPUT #1, Usd$ CLOSE 1 END FUNCTION