1: DECLARE FUNCTION PutComma$ (sn#) 2: DECLARE FUNCTION Usd$ (n#, t$) 3: DECLARE FUNCTION FileExist! (f$) 4: DECLARE FUNCTION Factorial# (n!) 5: 'DIM Usd$(5000) 6: DIM Cnt AS DOUBLE 7: CLS 8: INPUT "Number of variable components"; n1: n1 = ABS(n1) 9: INPUT "Number of Fixed components"; n2: n2 = ABS(n2) 10: PRINT "Possible combinations: "; PutComma$(Factorial#(n1)) 11: ff# = Factorial#(n1) 12: DO 13: FOR k = 1 TO CINT(n2 / 2) 14: m$ = m$ + CHR$(k + (64)) 15: NEXT k 16: FOR g = 1 TO n1 17: RANDOMIZE TIMER 18: v$ = CHR$(INT(RND * n1) + (65) + (CINT(n2 / 2))) 19: IF INSTR(m$, v$) = 0 THEN m$ = m$ + v$: v$ = "" ELSE g = g - 1 20: NEXT g 21: FOR k = 1 TO INT(n2 / 2) 22: m$ = m$ + CHR$(k + (65) + n1) 23: NEXT k 24: 25: 'FOR f = 0 TO Cnt 26: IF FileExist("VMEM.TXT") = NOT (-1) THEN Fail = 0: GOTO 10 27: 'IF Usd$(f, "") = m$ THEN fail = 1 28: OPEN "VMEM.TXT" FOR INPUT AS #1 29: DO UNTIL EOF(1) 30: LINE INPUT #1, ag$ 31: IF ag$ = m$ THEN Fail = 1: EXIT DO 32: LOOP 33: CLOSE 1 34: 10 'NEXT f 35: 36: IF Fail = 0 THEN 37: x$ = Usd$(Cnt, m$) 38: Cnt = Cnt + 1 39: IF Cnt = ff# THEN msg$ = "- That's all of them according to my calcs." 40: 'LPRINT m$; " Combo number: "; cnt;msg$ 41: PRINT m$; " Combo number: "; Cnt; msg$ 42: 'IF cnt MOD 25 = 0 THEN LOCATE 25, 1: PRINT "-=ð Press any key to continue ð=-"; : SLEEP 1: CLS 43: ss = TIMER 44: END IF 45: m$ = "" 46: Fail = 0 47: IF TIMER >= ss + 30 THEN PRINT "30 Seconds and still no more combonations": ss = TIMER 48: IF TIMER >= ss + 240 THEN PRINT "4 minutes and no combination... quiting": END 49: IF INKEY$ = CHR$(13) THEN KILL "VMEM.TXT": END 50: LOOP 51: 52: FUNCTION Factorial# (n) 53: mm# = n 54: FOR q = n - 1 TO 1 STEP -1 55: mm# = mm# * q 56: NEXT q 57: Factorial# = mm# 58: END FUNCTION 59: 60: FUNCTION FileExist (f$) 61: OPEN f$ FOR RANDOM AS #1 62: IF LOF(1) = 0 THEN FileExist = 1 ELSE FileExist = -1 63: CLOSE 1 64: END FUNCTION 65: 66: FUNCTION PutComma$ (sn#) 67: un$ = LTRIM$(RTRIM$(STR$(sn#))) 68: FOR q = LEN(un$) TO 1 STEP -1 69: cq = cq + 1 70: m$ = MID$(un$, q, 1) + m$ 71: IF cq MOD 3 = 0 AND q > 1 THEN m$ = "," + m$ 72: NEXT q 73: 74: PutComma$ = m$ 75: END FUNCTION 76: 77: FUNCTION Usd$ (n#, t$) 78: 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 79: FOR mn# = 1 TO n# 80: LINE INPUT #1, nth$ 81: NEXT mn# 82: LINE INPUT #1, Usd$ 83: CLOSE 1 84: END FUNCTION 85: |