Em tempos de Mega Sena acumulada…
Há alguns minutos atrás eu acabei me deparando com um desafio bastante interessante proposto por Rodrigo Sol. O desafio em questão pede a criação do menor programa possível — em qualquer linguagem — para gerar um jogo da Mega Sena. Hehe, impressionante o poder de uma loteria acumulada sobre as pessoas!
Seguem as regras do desafio nas palavras do próprio Rodrigo:
Escrever em qualquer linguagem de programação um programa que realize 100.000 sorteios de um numero entre 1 e 60 e mostre na tela os 6 mais freqüentes.
Ganha quem fizer o programa com o menor numero de linhas possíveis, lembrando que a linha considerada é a linha da unidade léxica da linguagem, portanto a seguinte linha em Java seria considerada duas: int i =0; sysout(i);
Como estou aprendendo Groovy, não podia deixar esta oportunidade passar. E, de fato, não deixei!
Veja, abaixo, um programa em Groovy que soluciona o “problema” proposto:
Os programas postados até então foram de, no mínimo, três linhas. Então podemos dizer que o Groovy — pelo menos no escopo do problema proposto — não deve nada a outras linguagens que a galerinha gosta de chamar de “ágeis”!
Aliás, será que esse programa aqui poderia ser escrito em menos linhas?
UPDATE
Minha consciência estava ficando pesada. Por isso, segue a versão Squeak/Smalltalk:
-
| s |
-
s := ((OrderedCollection withAll: ((1 to: 100000) collect: [:each | 60 atRandom])) groupBy: [:each | each] having: [:each | true]) asSortedCollection: [:a :b | b size < a size].
-
1 to: 6 do: [:each | Transcript show: ((s at: each) at: 1); cr]
![]()


27 de agosto de 2007 às 8:55 am
Show. Colei seu código no meu blog…
Valeu!
6 de setembro de 2007 às 7:30 pm
Não tem como a gente testar? Em todos os blogs que fui não tinham link…
Abraço!
6 de setembro de 2007 às 7:50 pm
Olá Doufer.
Para testar o código em Groovy, basta que você tenha o Groovy (e o Java, claro) instalado. Então, é só salvar o trecho que mostrei num arquivo e executá-lo:
Já o código em Smalltalk, você precisará instalar o Squeak Smalltalk. Então, após abri-lo, abra um Workspace (clicando em World - Open - Workspace), cole o código que mostrei. Abra também um Transcript (que é onde o resultado do código é mostrado), clicando em World - Open - Transcript. Aí, é só mandar executar o código e ver o resultado.
Abraços.