| « Django rodando em Jython | Blog Day 2007 » |
Code Contest: Mega-Sena Acumulada
Link: http://macacochefe.blogspot.com/2007/08/code-contest-em-tempos-de-mega-sena.html
Em resposta do desafio do Rodrigo Sol, que eu li no blog do José Oliveira e no blog do Daniel Martins, que consiste em rodar 100000 jogadas de números aleatórios de 1 a 60 e ver quais os que saíram mais.
from random import randrange
from itertools import groupby
from operator import itemgetter
x = [item for item in sorted([(k, len(list(g))) for k, g in groupby(sorted([randrange(1,61) for item in xrange(0,100000)]))],key=itemgetter(1),reverse=True)][:6]
print(x)
O código ficou comprido, mas eu achei razoavelmente fácil de ler (bom, fui eu quem escreveu, sou suspeito). Algumas coisas legais do python: o randrange (gerar números aleatórios numa range. Existe também o randint para esse fim, com a diferença que o randint inclui o último número e o randrange pára um número antes do fim do range. Além disso, o randrange me pareceu um pouquinho mais rápido). O groupby parece coisa de banco de dados, e é mesmo uma pitada de álgebra relacional aplicada aqui.
Aliás, essa não é a primeira vez que eu faço algum código relacionado à mega-sena: usando Python mesmo, e a planilha de resultados que se pode obter no site da caixa, eu verifiquei quais os números que tinham saído mais vezes. Até a última vez que eu verifiquei, o número mais comum era o 42.
Por falar em groupby e no módulo itertools, no Python Cookbook existe uma implementação dos algoritmos de junção de banco de dados usando esses carinhas. Se você gostar de banco de dados como eu, vale a pena conferir.
Endereço de trackback para este post
Trackback URL (clique direito e copie atalho/localização do link)
5 comentários, 2 trackbacks
Estudar python está na minha lista de coisas a fazer já.
Com a Mega Sena acumulada neste fim de semana resolvemos fazer um “bolão” para ver se saia pelo menos uma quadra pra pagar um churrasco
Só vamos ficar sabendo do resultado na segunda pela manha pois os bilhetes estão em uma gaveta no es...
só falta descobrir qual é a pergunta (tudo a ver com o tópico :D )
Ja que o Walter Cruz disse que o outro código que eu postei não tinha nada a ver com o contest (na verdade não tinha mesmo).
Segue o meu código para participar do Code Contest do Rodrigo Sol, que consiste em gerar 1000 jogadas para a mega sena que ...


