Não sou programador, sei apenas o básico e busquei na net e quebrei a
cabeça por dias para resolver um problema, gostaria de fazer
combinações de elementos de uma list no python. Assim, tenho uma list
com 18 elementos e quero combinações de 9 elementos, sem repetição do
elementos (não quero fazer permutação), tentei o probstat mas o python
diz que o modulo nao está instalado. Se alguém puder me ajudar!
Obrigado
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
Procure no histórico da lista (no site pythonbrasil.com.br tem os mecanismos
de busca). Se não me engano, há poucas semanas houve uma boa
discussão exatamente sobre isso.
Atenciosamente.
--
MARCELO DE F. ANDRADE
Belém, PA, Amazônia, Brasil
Linux User #221105
Conheça "A Turma do Açaí"(c) de Rosinaldo Pinheiro.
http://aturmadoacai.blogspot.com
Ajuda por favor
cont = 0
M = [1,2,3,4,5,6,7,8,9,10]
def comb(M):
comb = 5
jogo = 0
i = 0
f = 0
MM = []
while i != len(M) - (comb-2):
k = i - 1
f = i + (comb-2)
while k <= f :
d = f + 1
c = d + 1
tam = 0
P = []
#while c < len(M):
for j in range(i,f+1):
if j != k:
P.append(M[j])
tam = tam + 1
if tam == comb - 1:
c = c - 1
while c < len(M):
P.append(M[c])
tam = tam + 1
c = c + 1
cont = cont + 1
temp = []
for tp in range(0,len(P)):
temp.append(P[tp])
MM.append(temp)
print P
del P[comb-1]
if tam == (comb-2):
while d < len(M):
P.append(M[d])
#print M[d],
while c < len(M):
P.append(M[c])
tam = tam + 1
c = c + 1
cont = cont + 1
temp = []
for tp in range(0,len(P)):
temp.append(P[tp])
MM.append(temp)
print P
del P[comb-1]
#print P,
del P[comb-2]
d = d + 1
#print P
k = k + 1
i = i + 1
print cont
print len(MM)
return MM
K = []
K.append(comb(M))
M.reverse()
K.append(comb(M))
combi = 5
for i in range(combi,len(M)):
j = len(M)-1
troca = M.pop(j)
M.insert(i,troca)
K.append(comb(M))
M.reverse()
K.append(comb(M))
F=[]
for f in range(0,len(K)):
for ff in range(0,len(K[f])):
F.append(K[f][ff])
G = []
for i in range(0,len(F)):
inserir = 0
for j in range(0,len(G)):
if F[i] == G[j]:
inserir = 1
if inserir == 0:
G.append(F[i])
for i in range(0,len(G)):
G[i].sort()
G.sort()
print F,len(F)
print '\n\n\n',G,len(G)
[]s
2008/9/25 yeats1980 <w.b....@uol.com.br>
--
Yguaratã C. Cavalcanti
Msc Candidate in Computer Science - http://www.cin.ufpe.br
RiSE Researcher - http://www.rise.com.br/research
------------------------------------------
Home page: http://www.yguarata.com
[As partes desta mensagem que não continham texto foram removidas]
Olá,
Combinação sem repetição dos elementos distintos é um método
recursivo sem segredo, meia dúzia de linhas:
def comb(v, n, v0 = []):
if n == 1:
for i in range(len(v)):
print v0 + [v[i]]
else:
for i in range(len(v)-n+1):
comb(v[i+1:], n-1, v0+[v[i]])
comb([1,2,3,4,5], 3)
É isso?
[]'s
Junior Polegato
com o probstat vc faz algo como:
from probstat import Combination
combs = Combination([1,2,3,4,5,6,7,8], 6) #vai gerar 28 combinações, como o
esperado
tenho usado bastante ele aqui, as minhas limitações tem sido memória da
máquina e o limite de elementos nos dicionários :(
Abraços
2008/9/25 Marcelo Andrade <mfan...@gmail.com>
> 2008/9/25 yeats1980 <w.b....@uol.com.br <w.b.yeats%40uol.com.br>>:
>
> > Não sou programador, sei apenas o básico e busquei na net e quebrei a
> > cabeça por dias para resolver um problema, gostaria de fazer
> > combinações de elementos de uma list no python. Assim, tenho uma list
> > com 18 elementos e quero combinações de 9 elementos, sem repetição do
> > elementos (não quero fazer permutação), tentei o probstat mas o python
> > diz que o modulo nao está instalado. Se alguém puder me ajudar!
>
> Procure no histórico da lista (no site pythonbrasil.com.br tem os
> mecanismos
> de busca). Se não me engano, há poucas semanas houve uma boa
> discussão exatamente sobre isso.
>
> Atenciosamente.
>
> --
> MARCELO DE F. ANDRADE
> Belém, PA, Amazônia, Brasil
> Linux User #221105
>
> Conheça "A Turma do Açaí"(c) de Rosinaldo Pinheiro.
> http://aturmadoacai.blogspot.com
>
>
--
$> cd /pub
$> more beer
[As partes desta mensagem que não continham texto foram removidas]
consegui achar
Muito Muito Obrigado
Em python...@yahoogrupos.com.br, "Yguaratã C. Cavalcanti"
<yguarata@...> escreveu
>
> dá uma olhada no probstat (http://probstat.sourceforge.net/). lá tem uns
> exemplos que deve servir a seu propósito. ;)
>
> []s
>
> 2008/9/25 yeats1980 <w.b.yeats@...>
Cara, por favor, cole o seu código em algum pastebin.
--
Thiago Coutinho - http://thiago.bunghole.com.br/
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
Olá,
Qual o real motivo em se usar um "pastebin"? Ao que me consta,
aqui no meu gerenciador de e-mail Mozilla Thunderbird o código fica
normal, a não ser quando se tem símbolo de "maior que" na frente, mas
sem problemas, e quanto a ver na página do grupo, tem a opção na direita
"Exibir opções da mensagem" e logo abaixo abre "Usar fonte de tamanho
fixo", mostrando o código normalmente. Quem tem problemas com isso? Acho
melhor assim do que colocar o código em um local que futuramente pode
"sumir", melhor deixar tudo numa mesma mensagem, pelo menos penso assim.
<http://br.groups.yahoo.com/group/python-brasil/message/35492?var=0&l=1#>
[]'s
Junior Polegato
Olá!
> Qual o real motivo em se usar um "pastebin"? Ao que me consta,
> aqui no meu gerenciador de e-mail Mozilla Thunderbird o código fica
> normal, a não ser quando se tem símbolo de "maior que" na frente, mas
> sem problemas, e quanto a ver na página do grupo, tem a opção na direita
> "Exibir opções da mensagem" e logo abaixo abre "Usar fonte de tamanho
> fixo", mostrando o código normalmente. Quem tem problemas com isso? Acho
> melhor assim do que colocar o código em um local que futuramente pode
> "sumir", melhor deixar tudo numa mesma mensagem, pelo menos penso assim.
> <http://br.groups.yahoo.com/group/python-brasil/message/35492?var=0&l=1#>
Bem, no GMail ao menos o código aparece todo horrível, e dificilmente
compilável. No GMANE (que é uma interface melhor para a lista) também
sai bem ruim: http://blog.gmane.org/gmane.comp.python.brasil,
http://news.gmane.org/gmane.comp.python.brasil
Além disso, o pastebin tem realce de sintaxe.
Enfim, tirando códigos pequeninos, acho o pastebin muito bom, mesmo
com o risco de "sumir" :)
> []'s
> Junior Polegato
Até!
--
Adam Victor Nazareth Brandizzi
http://brandizzi.googlepages.com/
Várias razões. Nem todo mundo usa Thunderbird ou algum leitor de email
semelhante.
Lembre também que o pastebin é para ser usado apenas em código grande, e isso
já funciona muito bem para estimular o indíviduo com dúvida a justamente
tentar resumir o código ao mínimo possível que cause o mesmo problema, porque
sabe que mantendo-o pequeno o bastante para poder enviá-lo no corpo mensagem,
a chance de receber resposta é bem maior do que se for preciso seguir um
link.
Outra coisa é o tráfego desnecessário gerado. Considere que recentemente
enviaram uma mensagem com 160kb de código aqui na lista, e isso é enviado
para os 2600 membros, você tem mais de 400mb de transferência praticamente
inútil, porque uma parcela mínima desses irá de fato interessar-se em ler o
código, e dentre aqueles que leram a maior parte vai é responder repreendendo
o autor original e pedindo para enviar o mínimo de código possível que
replique o problema.
--
Pedro Werneck
Entendido! ;-)
[]'s
Junior Polegato
[]s
--
Marco André
marco...@gmail.com
http://marrcandre.blogspot.com
Leia o e-mail original no Gmail e você entenderá :^)
--
Thiago Coutinho - http://thiago.bunghole.com.br/
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
------------------------------------
Você encontra isso e muito mais no site
http://code.activestate.com/recipes/190465/
Abraços.
Álvaro Netto.
--- Em python...@yahoogrupos.com.br, "Yguaratã C. Cavalcanti"
<yguarata@...> escreveu
>
> dá uma olhada no probstat (http://probstat.sourceforge.net/). lá tem uns
> exemplos que deve servir a seu propósito. ;)
>
> []s
>
> 2008/9/25 yeats1980 <w.b.yeats@...>