Combinação
Moderador: Moderadores
Combinação
Boa tarde, gostaria de uma ajuda, quero fazer uma combinação de milhar, alguém tem alguma função?
[]´s
Wagner
Wagner
-
prmuller
- Usuário Nível 3

- Mensagens: 122
- Registrado em: 11 Nov 2008 12:25
- Localização: Vila Velha - ES
Combinação
Bom dia Wagner!
Qual o objetivo final?
Em análise combinatória existe o arranjo e a combinação, daí, depende do que vc quer fazer. Seria algum sorteio, gerar milhares aleatórias?
Sds,
Paulo Müller
Qual o objetivo final?
Em análise combinatória existe o arranjo e a combinação, daí, depende do que vc quer fazer. Seria algum sorteio, gerar milhares aleatórias?
Sds,
Paulo Müller
Combinação
Bom dia prmuller, a combinação seria de uma milhar por exemplo: 9756, nesta milhar a função iria fazer todas as possíveis combinações.
Ex.: 9567 - 9567 - 9756 - 9765- 7965 - 7956 - 5976 - 5967 - etc.. sempre nas milhares que forem inseridas.
Ex.: 9567 - 9567 - 9756 - 9765- 7965 - 7956 - 5976 - 5967 - etc.. sempre nas milhares que forem inseridas.
[]´s
Wagner
Wagner
-
prmuller
- Usuário Nível 3

- Mensagens: 122
- Registrado em: 11 Nov 2008 12:25
- Localização: Vila Velha - ES
Combinação
Bom dia!
Isso, na realidade, é um problema de arranjo. Seria a resposta para duas questões: quantas combinações são possíveis usando a milhar x? Como fazer isso?
Já fiz assim mas, usando o Pascal. Existe inclusive uma função já pronta. Em clipper eu gerava bds para bingos, raspadinhas, etc.
De qualquer forma, vou procurar nos meus arquivos antigos para ver se acho alguma coisa.
Não é o caso, mas de uma olhada na função Random do clipper que gera números alea
tórios.
Sds,
Paulo Müller
Isso, na realidade, é um problema de arranjo. Seria a resposta para duas questões: quantas combinações são possíveis usando a milhar x? Como fazer isso?
Já fiz assim mas, usando o Pascal. Existe inclusive uma função já pronta. Em clipper eu gerava bds para bingos, raspadinhas, etc.
De qualquer forma, vou procurar nos meus arquivos antigos para ver se acho alguma coisa.
Não é o caso, mas de uma olhada na função Random do clipper que gera números alea
tórios.
Sds,
Paulo Müller
-
prmuller
- Usuário Nível 3

- Mensagens: 122
- Registrado em: 11 Nov 2008 12:25
- Localização: Vila Velha - ES
Combinação
Correção. É combinação mesmo e não arranjo.
Nesse link um ponto de partida para vc, com o código fonte: viewtopic.php?f=43&t=15007
Analise e veja se dá para adaptar.
Amanhã vou fazer uma cirurgia de fratura do cotovelo e, na volta, tentarei te ajudar, oK?
Sds,
Paulo Müller
Nesse link um ponto de partida para vc, com o código fonte: viewtopic.php?f=43&t=15007
Analise e veja se dá para adaptar.
Amanhã vou fazer uma cirurgia de fratura do cotovelo e, na volta, tentarei te ajudar, oK?
Sds,
Paulo Müller
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Combinação
Se os números que serão combinados não repetir nenhum número, então pode usar este código:
Obs.: esta função vai funcionar apenas para combinações de 4 números.
Código: Selecionar todos
Function Main()
aCmb:=CombMil("9756") //chame a funcao passando o numero que sera combinado
*Vai retornar uma matriz com as combinacoes
For i_=1 to len(aCmb)
? aCmb[i_]
Next
Return Nil
Function CombMil(cMil)
Local cCmbPos:="1234|1243|1324|1342|1423|1432|2134|2143|2314|2341|2413|2431|3124|3142|3214|3241|3412|3421|4123|4132|4213|4231|4312|4321|"
Local aRet_:={}
For e_=1 to 4
cNum_:=SUBS(cMil,e_,1)
cCmbPos:=StrTran( cCmbPos, Str(e_,1), cNum_)
Next
For e_=1 to 24
cCob_:=Left(cCmbPos,4)
AADD(aRet_,cCob_)
If e_<24
cCmbPos:=SUBS(cCmbPos,6)
endif
Next
Return aRet_
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Combinação
Olá Pessoal,
Vou dar uma contribuição aqui que acho que funcionou (pode ser com mais de 4 dígitos também). Acho que funcionou:
Vou dar uma contribuição aqui que acho que funcionou (pode ser com mais de 4 dígitos também). Acho que funcionou:
Código: Selecionar todos
//Function Main() // para Clipper deixe comentado...
Local GetList:={}
Local x, xy, cChar
Local cNumero, cNumeroFix
Local aMatriz:={}, nPosi:=0
Clear Screen
cNumero := Space( 4 )
@ 3,5 SAY "Digite um Numero:" GET cNumero PICTURE "9999"
Read
cNumero := AllTrim( cNumero )
If Empty( cNumero )
Return Nil
Else
cNumeroFix := cNumero
EndIf
While nPosi < Len( AllTrim( cNumero ) ) // trata a milhar principal...
nPosi++
For x = 1 To Len( AllTrim( cNumero ) )
cChar := SubSt( cNumero, x, 1 )
cChar := cChar + Stuff( cNumero, x, 1, "" )
If AScan( aMatriz, cChar ) = 0
AaDd( aMatriz, cChar )
EndIf
If x = Len( AllTrim( cNumero ) )// - 1
cNumero := cChar
EndIf
Next
EndDo
nPosi := 0
For xy:=1 To Len( aMatriz ) // trata as combinações...
cNumero := aMatriz[xy]
For x = 1 To Len( AllTrim( cNumero ) )
cChar := SubSt( cNumero, x, 1 )
cChar := cChar + Stuff( cNumero, x, 1, "" )
If AScan( aMatriz, cChar ) = 0
AaDd( aMatriz, cChar )
EndIf
Next
Next
Clear Screen
aMatriz := Asort( aMatriz )
? "Combinacoes de:", cNumeroFix
?
For x:=1 To Len( aMatriz )
? aMatriz[x]
Next
?
?
//Return NilAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
carlos_dornelas
- Usuário Nível 3

- Mensagens: 400
- Registrado em: 25 Ago 2004 21:54
Combinação
Não testei aqui, mas acho que assim também daria certo:
[]s
Antonio Carlos
Código: Selecionar todos
aDigitos:={9,7,5,6}
for a=1 to 4
for b=1 to 4
for c=1 to 4
for d=1 to 4
if a<>b .and. a<>c .and. a<>d .and. b<>c .and. b<>d .and. c<>d
? str(aDigitos[a],1)+str(aDigitos[b],1)+str(aDigitos[c],1)+str(aDigitos[d],1)
endif
next
next
next
next
Antonio Carlos
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Combinação
Gostei da brincadeira, uma espécie de desafio.
Parece que deu certo, já que as opções seriam 4 x 3 x 2 x 1, o que dá 24.
Comecei pensando em agilizar a rotina anterior.
depois pensei reduzir variáveis alterando pra array.
como ficaria repetitivo nos loops, pensei em recursividade.
uma coisa foi levando pra outra.
Depois retirei o FOR/EACH, porque aqui é Clipper.
Até que ficou interessante.
Parece que deu certo, já que as opções seriam 4 x 3 x 2 x 1, o que dá 24.
Comecei pensando em agilizar a rotina anterior.
depois pensei reduzir variáveis alterando pra array.
como ficaria repetitivo nos loops, pensei em recursividade.
uma coisa foi levando pra outra.
Depois retirei o FOR/EACH, porque aqui é Clipper.
Até que ficou interessante.
Código: Selecionar todos
#include "inkey.ch"
PROCEDURE Main
LOCAL cNumero := "9756", aList := {}, nCont
SetMode( 30, 80 )
CLS
? Time()
Combina( cNumero, "", @aList )
ASort( aList )
FOR nCont = 1 TO Len( aList )
? nCont, aList[ nCont ]
NEXT
? Time() + " ESC"
DO WHILE Inkey(0) != K_ESC
ENDDO
RETURN
FUNCTION Combina( cNumeros, cAcumulado, aList )
LOCAL cNumero, nCont
IF Len( cAcumulado ) == Len( cNumeros )
AAdd( aList, cAcumulado )
RETURN NIL
ENDIF
FOR nCont = 1 TO Len( cNumeros )
cNumero := Substr( cNumeros, nCont, 1 )
IF ! cNumero $ cAcumulado
Combina( cNumeros, cAcumulado + cNumero, @aList )
ENDIF
NEXT
RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Combinação
Não ficou limitado a 4 números.
6 x 5 x 4 x 3 x 2 x 1 = 720 combinações para 6 números
6 x 5 x 4 x 3 x 2 x 1 = 720 combinações para 6 números
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/

