Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TheMaker

Gerar combinações de Strings...

Recommended Posts

Olá...Seguinte... supondo que tenho um string 'forum do site imaster'...Esse String tem 4 Palavras (nesse exemplo)...Preciso de uma rotina que crie todas as combinações possiveis a partir desse stringoriginal...Ex:imaster forum do site;site imaster forum do;do site imaster forum;imaster do site forum; E assim por diante...Me ajudem!!!Qualquer dica que resolva é valida....Obrigado! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve TheMakerBom voce ta querendo algo do tipo Combinacao de n em p ne ... tipo na matematica...CNPBom vou procurar lagumac coisa aqui a te mando se achar... velho nao sei se voce conhece isso que to falando ... tenho encontrado com progrmadores super novos e que ainda nao viram esta materia .. entao na se sinta ofendido.MSN OtacilioRicardo@hotmail.comICQ 337637102 noturno

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já ouvi falar sim...

 

Quebrei um pouco a cabeça agora a pouco e já consigo o resultado q eu queria

Ficou assim:

Procedure TShake.LoadShakeWordsToRich(ThemeStr : String; Rich : TRichEdit);LabelGoOut;VarArrayCol : Array OF Integer;X,Y,A1,A2 : Integer;StrTemp : String;begin        IF Trim(ThemeStr) = '' Then Abort;Common.ExtractWords(ThemeStr,Common.WordsCount(ThemeStr));//separa as palavras do parametro Themestr em um array globalSetLength(ArrayCol,Length(Common.Words)); Y := 0;//Carrrga o array numerico c/ quantidade de palavras    For X := 0 To High(Common.Words) Do    Begin    ArrayCol[Y] := 0; Inc(Y);    End;// Inicio do Processo...  While ArrayCol[0] < Length(ArrayCol) Do  Begin  Application.ProcessMessages;       //Evita combinações tipo 011(Com repetição)       For A1 := 0 To High(ArrayCol) Do       Begin           For A2 := A1+1 To High(ArrayCol) Do           Begin                IF ArrayCol[A1] = ArrayCol[A2] Then                Begin                Goto GoOut;                End;;           End;       End;     //Carrega StrTemp com Sequencia de combinação..     StrTemp := '';       For X := 0 To High(ArrayCol) Do       Begin            IF ArrayCol[X] < Length(ArrayCol) Then            Begin            StrTemp := StrTemp + Common.Words[ArrayCol[X]][0];            End Else Begin            Goto GoOut;            End;       End;  Rich.Lines.Add(Trim(StrTemp));  GoOut:  Inc(ArrayCol[Length(ArrayCol)-1]);       //Faz o cronometro andar...       For Y := 0 To High(ArrayCol) Do       Begin           IF ArrayCol[Y] = Length(ArrayCol) Then           Begin           ArrayCol[Y] := 0;           Inc(ArrayCol[Y-1]);           End;       End;  End;End;
Se tiver algo que melhore a rotina seria bom...

afinal ainda acho q está muito grande...

De qualquer forma valeu pela Moral!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.