Jump to content

armazenar e pesquisar resultados semelhantes no jogo ALBANYHOLD


jcvilanova

Postagens Recomendadas

Galera, estou com um desafio de um curso que estou fazendo e já proxima da data de entrega não sai do lugar. Existe um jogo de loterias que se chama ALBANYHOLD, onde cada jogador pode apostar 10 dezenas que serão sorteadas entre 0 e 100. os resultados são apresentados sempre em ordem crescente das dezenas e distribuidas conforme as letras do nome do jogo, no caso ALBANYHOLD. Na letra A apresenta-se sempre dezenas de 0 a 10, na B de 11 a 20 e assim sucessivamente até a Coluna D, que apresenta os numeros de 91 a 100. O desafio consiste em: criar um sistema que faça apostas aleatórias mas que faça uma varredura em todos os resultados já apresentados e compare com a sequencia aleatória que foi criada e caso encontre algum resultado que tenha pelo menos as 5 primeiras dezenas semelhantes, que esta seja separada pelo sistema e descartada. O sistema so pode apresentar sequencias de jogos cujas as 5 primeiras dezenas jamais tenham saido antes. Eu já fiz o sistema para gerar os jogos aleatoriamente, mas nao estou conseguindo fazer com que faça essa busca nos jogos passados para comparar com a ultima sequencia criada. Alguem poderia me ajudar ?

Link to comment
Compartilhe em outros sites

  • 2 weeks later...

Se meus cálculos estiverem certos, é quase impossível descartar uma aposta baseado na igualdade das cinco primeiras dezenas ordenadas em ordem crescente. A probabilidade seria algo em torno de 1 em 8,6e+12, ou seja uma em mais de oito trilhões. Escrevi um algorítimo, e mesmo usando um grande número de repetições, encontrei no máximo 2 dezenas repetidas.

Se quiser testar, esse é o código que usei:

const gerarDezenas = () => {
    let dezenas = [];
    for (let i = 0; i < 10; i++) {
        do {
            var dezena = Math.floor(Math.random() * 101);
        } while (dezena === 0 || dezenas.includes(dezena));
        dezenas.push(dezena);
    }
    return dezenas.sort((a, b) => a - b);
}

const gerarSorteios = (qtd) => {
    let sorteios = [];
    for (let i = 0; i < qtd; i++) {
        const sorteio = gerarDezenas();
        sorteios.push(sorteio);
    }
    return sorteios;
}

const gerarApostas = (qtd) => {
    const sorteiosAnteriores = gerarSorteios(1000000); // Aqui determina a quantidade de sorteios anteriores
    var apostas = [], descartado = [];
    for (let i = 0; i < qtd; i++) {
        const aposta = gerarDezenas();
        let index = 0, condicao = true;
        sorteiosAnteriores.forEach((sorteio) => {
            do {
                if (sorteio[index] !== aposta[index]) condicao = false;
                index++;
            } while (condicao && index < 5);
        });
        if (!condicao) {
            apostas.push(aposta);
        } else {
            descartado.push(aposta);
        }
    }
    return { apostas: apostas, descartado: descartado }
}

console.log(gerarApostas(100)); // Aqui a quantidade de apostas

 

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...