Jump to content
dajofeno

Problema Randoms

Recommended Posts

dajofeno

Boas, tenho aqui um código que é recursivo e baseia-se em números randoms. Ora isto é uma questão de sorte para funcionar. Às vezes funciona bem, outras vezes como não gera os números que precisa num determinado número de loops (stack penso) ele dá um segmentation fault.

Alguma ideia para aumentar o número de casos que o programa entra em recursividade de forma a ter mais probabilidades de correr?

Cumps

Share this post


Link to post
Share on other sites
Baderous

Deve dar para fazer isso através de uma opção qualquer (talvez no GCC) que permita alocar mais memória a um programa, mas não é essa a forma correcta de resolver o problema. O melhor será aplicar memoization ao algoritmo ou pensar numa solução iterativa.

Share this post


Link to post
Share on other sites
Localhost

Podes dizer qual é o problema? É que assim era muito mais fácil...


here since 2009

Share this post


Link to post
Share on other sites
dajofeno

Basicamente gera posições de peças de tamanho variavel num tabuleiro predefinido, mas tem certas restrições. As primeiras peças (e as maiores) não são problema mas as últimas é que complica. Eu tenho duas alternativas:

- Ou tento melhorar o algoritmo mas iria ter de contemplar muitos casos logo faria um código muito logo e confuso de compreender, o que não pretendo.

- Ou então retiro alguma "aleatoriedade" ao código e faria as posições mais "fixas" se é que me faço entender

Sugestões?

Share this post


Link to post
Share on other sites
Localhost

Não tens nenhum enunciado ou algo do género? É que assim torna-se muito complicado de te ajudar.


here since 2009

Share this post


Link to post
Share on other sites
dajofeno

Imagina: Eu ponho a 1ª peça através de números aleatórios, tudo bem. Ao por a segunda peça da mesma forma, já tenho de por uma condição para não sobrepor à primeira. E a terceira não pode sobrepor a essas duas... e por aí em diante.

Agora uma função que coloca uma peça, caso não consiga à primeira pelos motivos que referi acima ira chamar-se a si própria (recursivamente) e gerar novos números e tentar novamente.

O problema é que nas últimas peças como já há poucos lugares vagos:

- Ou tenho a sorte de gerar os números de forma a colocar a peça numa posição correcta;

- Ou o gcc dá Segmentation Fault porque a função chamou-se demasiadas vezes sem sucesso e o compilador pensou que ela estava em loop infinito, mas eu sei que mais cedo ou mais tarde a função acabaria por achar uma posição correcta;

Acho que não consigo ser mais claro :cheesygrin:

Share this post


Link to post
Share on other sites
Localhost

Não podes reduzir o espaço de pesquisa (aleatório) nesse caso. O melhor mesmo é testares todas as posições sempre e assim que vires que dá para colocar numa posição pões. Isto resulta se os teus limites (do mapa, sort to speak) não forem muito grandes.


here since 2009

Share this post


Link to post
Share on other sites
dajofeno

Pois já tinha pensado nisso mas é a tal coisa de complicar o algoritmo. Se não houver outra solução vou ter de usar essa opção.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.