Ir para conteúdo
Fórum Script Brasil
  • 0

Desafio Para Até Os Mais Experientes Na Área De Programação - Ajude


HiltonCarlos

Pergunta

Olá, 

Eu trabalho, junto ao meu pai, na área de programação. 

E recentemente eu estou envolvido em um projeto pessoal.

Acabei me deparando com um desafio logico em que eu empaquei. 

Meu pai, que está na área desde o cartão perfurado, pouco ajudou. 
Então venho implorar pela ajuda de vocês. 
Por favor, leiam o que eu queria poder ser capaz de fazer.
E se possível me dê dicas ou a resolução do problema. Que seja em qualquer linguagem ou um executável. 


Isso já me ajudaria muito. 



Bem...

Apresentarei uma situação hipotética primeiro para ilustrar:

Suponha que você jogue duas moedas.
Cada uma tendo: o numero 1 estampado em um lado
e no outro lado o numero 2. 




Então as combinações possíveis ao se jogar essas duas moedas são:
1 1
1 2
2 1
2 2

Ao somar o resultado de cada combinação eu teria: 
1 1 = 2
1 2 = 3
2 1 = 3
2 2 = 4




Então eu posso afirmar que, ao jogar essas duas moedas eu tenho:
1 chance em 4 de sair a soma com resultado 2 = 25%
2 chances em 4 de sair a soma com resultado 3 = 50%


1 chance em 4 de sair a soma com resultado 4 = 25%



o que busco com essa "rolagem" é o seguinte:
Eu quero saber qual é a minha chance ,em porcentagem ,que tenho, tendo um determinado numero como alvo,
tirar um numero menor ou igual a este numero alvo, nessa rolagem.
Ou seja, rolando essas duas moedas, eu quero tirar um numero igual ou menor a 3 por exemplo. 

Nessa situação acima é fácil discernir:



Caso eu tenha como alvo o numero 1, eu teria 0/4 (0% de chances). 
Caso eu tenha como alvo o numero 2, eu teria 1/4 (25% de chances).
Caso eu tenha como alvo o numero 3, eu teria 3/4 (75% de chances).
Caso eu tenha como alvo o numero 4, eu teria 4/4 (100% de chances).

A situação hipotética foi essa, para poder situar você mais ou menos na mecânica da coisa. 
Porém o meu problema é mais profundo do que esse, usando mais chances do que de apenas duas moedas.

o que eu desejo fazer/ter é um programa que receba uma quantidade X de dados e o valor Y, que seria quantas faces esses dados possuem. 
O programa somaria cada uma das combinações separadamente, guardaria quantas delas resultam em um determinado valor e listaria quais seriam as minhas chances de tirar um numero menor ou igual ao que cada uma das combinações resultou. 


Exemplo: 
O programa recebendo 2 dados de 4 faces cada. 



Imagem



O programa listaria para mim o seguinte:

N°__ Chances_______%___
2 - 01/16 = 6,25%
3 - 03/16 = 18,75%
4 - 06/16 = 37,50%


5 - 10/16 = 62,50%

6 - 13/16 = 81,25%

7 - 15/16 = 93,75%

8 - 16/16 = 100,00%



Ou seja, em uma rolagem de 2 dados de 4 faces cada, eu teria 62,50% de chances de tirar um valor menor ou igual a 5 por exemplo. 

Esses exemplos são facilmente resolvidos a mão. porém ao colocar em questão mais dados com mais faces, as proporções ficam muito maiores. 
E a situação se complica mais quando se poe na mão do "usuário" a quantidade de lados que os dados possuirão e a quantidade de dados que serão rolados. 

Podem me ajudar a discernir uma logica para conseguir fazer esse programa?
Você já fez algo parecido?
Você conseguiria desenvolver um programa assim? 

Me desculpem se não é aqui que eu deveria postar sobre algo assim. Por favor me fale se for o caso que eu coloco em outro lugar.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Acho deve ser a mesma logica para contar de 0 a 1000 usando 3 loop for.

milhar, centena, dezena, unidade

Um for para centena, outro para dezena, outro para unidade, no final de tudo temos um milhar

Cada resultado gerado é guardado em uma lista, depois se faz a logica de probabilidade

Link para o comentário
Compartilhar em outros sites

  • 0

Estou tentando usar recursão, porem o resultado esta ficando poluído, como a repetição de algumas jogadas

Mas já tive exito usando duas funções

Uma age como um verificador, como o sistema decimal depois do 9 vem o zero e acrescenta 1 na próxima posição, só que nesse caso para o próximo índice em uma lista, que tem o comprimento do numero de dados

E outra função que fica fazendo ciclos, ate completar o numero possível de jogadas, n_faces elevado n_dados, e acrescentando sempre um na primeira posição da lista

 

Ainda vou tentar mais um pouco com recursão 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...