Ir para conteúdo


- - - - -

Euromilhões chave automática beta 2.4


  • Por favor inicie sessão para responder
36 respostas a este tópico

#1 Ridelight

Ridelight

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7275 mensagens

Publicado 25 de Agosto de 2006 - 11:34

Imagem Colocada

Informações


- Simulador de chaves para o jogo "Euromilhões"

Bugs detectados


- Apareçe o numero 0 nas chaves [FIXED]
- Dificuldades de execução por parte de determinados utilizadores [FIXED]
- Gera números repetidos dentro da chave  [FIXED]

Downloads disponíveis



Beta 2.4

#2 Anonym

Anonym

    Try-Catch User

  • Membro
  • PipPipPipPip
  • 478 mensagens

Publicado 25 de Agosto de 2006 - 12:32

bem, já existem tantos iguais ao teu... Mas sempre é bom pra treinar ;)

sugestão: Mete para ele mostrar os resultados por ordem crescente

#3 Mythos

Mythos

    void

  • Membro
  • PipPip
  • 58 mensagens

Publicado 25 de Agosto de 2006 - 12:50

Boas!

Como estás a gerar os números?
Ha um ano ou dois fiz algo do gen para o totoloto com algoritmos genéticos e tal, mas acabei por deixar de lado porque as heuristicas que estava a usar não davam grandes dif de qualidade...

Good job ;)

#4 Triton

Triton

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 8490 mensagens

Publicado 25 de Agosto de 2006 - 18:11

Deu-me erro a instalar, Cannot download file. ;)

#5 Neocore

Neocore

    Boolean User

  • Membro
  • PipPipPip
  • 194 mensagens

Publicado 25 de Agosto de 2006 - 23:18

Fiz um programa semelhante em Pascal.
Código (Pascal):
program euromilhoes;
uses wincrt;
var b,n,n1,a,n2,n3,n4,n5,es1,es2,z,y:integer;
    op,cont:byte;
    chave: array [1..50] of integer;
    estrela: array [1..6] of integer;

    label ran_es;

begin
 clrscr;
 writeln('Prima uma tecla para obter a sua chave'); readln;
 randomize;
 n:=0;

 {inicio do random dos numeros}
 n1:=random((50)+1);
 chave[n1]:=n1;

 repeat
  n2:=random((50)+1);
  chave[n2]:=n2;
 until n2<>n1;

 repeat
  n3:=random((50)+1);
  chave[n3]:=n3;
 until (n3<>n2) and (n3<>n1);

 repeat
  n4:=random((50)+1);
  chave[n4]:=n4;
 until (n4<>n3) and (n4<>n2) and (n4<>n1);

 repeat
  n5:=random((50)+1);
  chave[n5]:=n5;
 until (n5<>n4) and (n5<>n3) and (n5<>n2) and (n5<>n1);
 {fim do random dos numeros}

 {inicio da ordenaçao dos numeros}
writeln('Numeros: ':6);
for b:=1 to 50 do
 begin
  if chave[b]>0 then
     writeln(chave[b]:3);    
 end;
 {fim da ordenaçao dos numeros}

 {inicio do random das estrelas}
writeln;
readln;
randomize;
es1:=random((5)+1);
estrela[es1]:=es1;

ran_es:
es2:=random((5)+1);
if (es2<>es1) and (es2>0) then
 estrela[es2]:=es2
else
 goto ran_es;
{fim do random das estrelas}

 {inicio da ordenaçao da estrelas}
writeln('Estrelas: ');
      for b:=1 to 6 do
       
        if estrela[b]>0 then
       begin  writeln(estrela[b]:3);
        end;
 {fim da ordenaçao das estrelas}

end.


Já não me lembro se tem algum bug, mas aparentemente não tem...
Uma coisa que fiz e que tu nao fizeste foi ordenar a chave, o que me deu um pouco mais de trabalho.

Neocore

#6 Triton

Triton

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 8490 mensagens

Publicado 26 de Agosto de 2006 - 04:03

Código (Python):
import random
numeros = range(1, 52)
estrelas = range(1, 10)

while len(numeros) > 5:
    numeros.pop(numeros.index(random.choice(numeros)))
numeros.sort()

while len(estrelas) > 2:
    estrelas.pop(estrelas.index(random.choice(estrelas)))
estrelas.sort()

print 'Chave:', numeros, 'Estrelas:', estrelas

Uma maneira de fazer em Python. Não sei se tenho os limites bem mas o que interessa é a lógica.

Depois mete o teu código Ridelight.

#7 Ridelight

Ridelight

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7275 mensagens

Publicado 28 de Agosto de 2006 - 01:06

Código (vb.net):
 Private Sub btnIniciar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIniciar.Click
        Dim MyValue As Integer = 0
        Dim i As Integer = 0
        Dim strMessage As String = ""
        Dim rop As Integer = 50
        Randomize()


        Do
            i += 1
            System.Threading.Thread.Sleep(50)
            MyValue = CInt(Int((50 * Rnd()) + 0))
            Num1.Text = MyValue.ToString
            Num1.Refresh()
            MyValue = CInt(Int((50 * Rnd()) + 0))
            Num2.Text = MyValue.ToString
            Num2.Refresh()
            MyValue = CInt(Int((50 * Rnd()) + 0))
            Num3.Text = MyValue.ToString
            Num3.Refresh()
            MyValue = CInt(Int((50 * Rnd()) + 0))
            Num4.Text = MyValue.ToString
            Num4.Refresh()
            MyValue = CInt(Int((50 * Rnd()) + 0))
            Num5.Text = MyValue.ToString
            Num5.Refresh()
            MyValue = CInt(Int((9 * Rnd()) + 0))
            Est1.Text = MyValue.ToString
            Est1.Refresh()
            MyValue = CInt(Int((9 * Rnd()) + 0))
            If i < rop Then
                Est2.Text = MyValue.ToString
            ElseIf strMessage = "" Then
                Est2.Text = MyValue.ToString
            Else
               Est2.Text = ((Int(Val(Today().DayOfWeek)) _
                 + strMessage.Length) Mod 10).ToString
            End If
          Est2.Refresh()
        Loop Until i = rop
    End Sub


#8 Ridelight

Ridelight

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7275 mensagens

Publicado 28 de Agosto de 2006 - 01:27

Beta 1.1 adicionada !

#9 Ridelight

Ridelight

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7275 mensagens

Publicado 28 de Agosto de 2006 - 01:47

Ver MensagemTriton, em 25 de Agosto de 2006 - 18:11, disse:

Deu-me erro a instalar, Cannot download file. :P

Experimenta a nova versão, a beta 1.1 !
Beta 2 irá estar disponivel em principio amanhã !

#10 Ridelight

Ridelight

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7275 mensagens

Publicado 28 de Agosto de 2006 - 11:45

Ver MensagemAnonym, em 25 de Agosto de 2006 - 12:32, disse:

sugestão: Mete para ele mostrar os resultados por ordem crescente

E como faço isso ?

#11 Neocore

Neocore

    Boolean User

  • Membro
  • PipPipPip
  • 194 mensagens

Publicado 28 de Agosto de 2006 - 12:29

Ver Mensagem®idelight, em 28 de Agosto de 2006 - 11:45, disse:

Ver MensagemAnonym, em 25 de Agosto de 2006 - 12:32, disse:

sugestão: Mete para ele mostrar os resultados por ordem crescente

E como faço isso ?

Como é uma amplitude de numeros pequena, colocas um array de 49 (para os numeros) e outro de 9 (para as estrelas).
Depois, conforme o numero randomizado colocas no seu respectivo array (por exemplo: sai o numero 37 --> fica na posição 37 do array dos numeros).
Fazes isso com os numeros todos e depois com as estrelas.

Para ordenares percorres o array com um ciclo for (de 1 a 49). Quando a posição for diferente de zero, mostras o numero. Assim ficas com os numeros ordenados por ordem crescente.

Ve o codigo que em pascal:

Código (Pascal):
for b:=1 to 50 do
 begin
  if chave[b]>0 then
     writeln(chave[b]:3);    
 end;

Neocore

#12 _elf

_elf

    void

  • Membro
  • PipPip
  • 39 mensagens

Publicado 28 de Agosto de 2006 - 13:43

se tiverem os numeros sorteados num array nao e nada dificil de ordenar, como sao apenas 5 numeros o Insertion Sort é eficaz. http://pt.wikipedia.org/wiki/Insertion_sort

Eu em php precisei de fzr uma coisa semelhante, mas era para escolher tres fotografias aleatorias mas que nao fossem iguais, e a minha maior dificuldade foi faze-las com que nao se repetissem, mas ate e bastante facil isso, na altura e ke na percebia um cu disto :P

#13 Ridelight

Ridelight

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7275 mensagens

Publicado 28 de Agosto de 2006 - 14:01

Citar

logo a 1ª chave gerada, detectei um bug. 8-)

gerou as 2 estrelas com o numero 7.


#14 Triton

Triton

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 8490 mensagens

Publicado 28 de Agosto de 2006 - 14:50

Esta nova versão já funciona. :D

Bom trabalho! :P

#15 Ridelight

Ridelight

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7275 mensagens

Publicado 28 de Agosto de 2006 - 14:55

Ver MensagemTriton, em 28 de Agosto de 2006 - 14:50, disse:

Esta nova versão já funciona. :P

Bom trabalho! :P

Mas está pior que a beta 1, gera umas chaves muito esquisitas, mas a sorte é mesmo assim, aleatória, mas está a gerar números repetidos nas chaves, ainda a pouco me gerou três vezes o 22 !  :D

#16 Triton

Triton

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 8490 mensagens

Publicado 28 de Agosto de 2006 - 15:07

Como ainda não tens o sort implementado, dá uma vista no meu algoritmo que usa arrays. Talvez ainda o pudesse tornar mais eficiente se adiciona-se à lista apenas os que vou precisar.

#17 Ridelight

Ridelight

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7275 mensagens

Publicado 28 de Agosto de 2006 - 18:26

Imagem Colocada


Beta 2



#18 gil_so_ares

gil_so_ares

    null

  • Novo Membro
  • Pip
  • 1 mensagens

Publicado 08 de Setembro de 2006 - 23:28

Viva, existe progressos qt a este programa? Não seria melhor um programa que gerasse os números aleatórios com base nos números que já sairam, através por exemplo de um ficheiro de entrada em que se colocava lá os números? É só uma ideia...

#19 Ridelight

Ridelight

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7275 mensagens

Publicado 11 de Setembro de 2006 - 00:17

Não existem novidades, de momento encontra-se parado !

#20 pcaldeira

pcaldeira

    CRLF

  • Membro
  • PipPipPipPipPip
  • 775 mensagens

Publicado 13 de Setembro de 2006 - 19:36

Por acaso tenho aqui um projecto dos meus primeiros dias de programação em C#, com a mesma função que esse. Está protegido contra repetição de números e apresenta-os por ordem crescente. O grafismo é que praticamente não existe, mas penso que o que interessa é se trabalha ou não.
Os links:
ficheiro exe - http://www.uploading.com/files/9V1T9UOS/Euromilh__es___Gerador_de_Chaves__FINALIZADO_.exe.html
source code - http://www.uploading.com/files/6Q4HQZ5M/Euromilh__es___Gerador_de_Chaves__FINALIZADO_.rar.html