Jump to content
Fórum Script Brasil
  • 0

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


HiltonCarlos
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...