Salut à vous, je voudrais créer une boucle qui liste toutes les chaines de caractères possibles à partir de différents cractères donnés. Par exemple si j'ai les caractères a, b et c, je veux avoir comme liste:
a
b
c
ab
ac
bc
Mais je n'arive pas à faire la boucle, quelqu'un peut m'aider ?
Générer toues les chaines de caractères possibles
Code : Tout sélectionner
Procedure.s GetAllChar(key.s,size.l,Charset.s)
Protected Partial.l, Pos.l
If Len(Key) < Size
Partial = #True
ElseIf Len(Key) > Size Or Len(Charset) <= 1
Key = #NULL$
EndIf
If Key And Not Partial
rKey.s = Right(Key, 1)
rSet.s = Right(Charset, 1)
While rKey = rSet
Key = Left(Key, Len(Key)-1)
rKey.s = Right(Key, 1)
Wend
EndIf
If Key And Not Partial
Pos = FindString(Charset, Right(Key, 1), 1) + 1
Key = Left(Key, Len(Key)-1) + Mid(Charset, Pos, 1)
EndIf
If Key Or Partial
While Len(Key) < Size
Key + Left(Charset, 1)
Wend
EndIf
ProcedureReturn Key
EndProcedure
Charset.s = "ABCDEF"
For Size = 1 To 5
Repeat
key.s = GetAllChar(key,size,Charset)
Debug key
Until Not Key
Next
je prefere celui ci 
mais il a un but legerement different !!

mais il a un but legerement different !!

Code : Tout sélectionner
; algo de permutation .
Declare ALGO_PERMUTATION(mot$, deb$)
ALGO_PERMUTATION("123", "")
Procedure ALGO_PERMUTATION(mot$, deb$)
For i=1 To Len(mot$)
ch$=Left(mot$,1)
rest$=Right(mot$,Len(mot$)-1)
If rest$<>""
deb$=deb$+ch$
ALGO_PERMUTATION(rest$, deb$)
deb$=Left(deb$,Len(deb$)-1)
Else
Debug deb$+ch$
EndIf
mot$=rest$+ch$
Next i
EndProcedure