jcvilanova Posted September 16, 2022 Share Posted September 16, 2022 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 Share on other sites More sharing options...
fchaves Posted September 27, 2022 Share Posted September 27, 2022 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 Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now