Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Eu precisava de uma ajuda em encontrar uma lógica para resolver meu problema. Tenho certeza que qualquer programação seria possível.
Eu tenho 5 espaços.
_ _ _ _ _
Cada um desses espaços vai um número de 0 a X. Esse X é dado pelo usuário (inteiro). O problema é que tem de ser feita uma distribuição desses espaços em X. Ou seja, a soma de todos os espaços tem de ser exatamente X.
Exemplo:
1 -> 1000/01000/00100/00010/00001
2 -> 2000/11000/10100/10010/10001/02000/01100/01010/01001/00200/00110/00101/00020/00011/00002
E assim se segue.
Eu coloquei um contador que rodava como se fosse um relógio digital e ele só fazia a minha função o momento que ele somava e conseguia o X, como segue abaixo:
Do While t <> (x + 1)
v = v + 1
If v = (x + 1) Then
m = m + 1
v = 0
End If
If m = (x + 1) Then
l = l + 1
m = 0
v = 0
End If
If l = (x + 1) Then
e = e + 1
l = 0
m = 0
v = 0
End If
If e = (x + 1) Then
t = t + 1
e = 0
l = 0
m = 0
v = 0
End If
If t + e + l + m + v = x Then
'Função...
End If
Loop
O problema, é que quando eu colocava um X como 20 já demorava 2 segundos para me retornar o valor, cada número que aumento em x cresce exponencialmente a quantidade de cálculos e, consequentemente, o tempo. Em força bruta (como estou fazendo) não está me ajudando. Tinha o mesmo problema para 2 espaços e era super tranquilo distribuir os dados, para 3 foi um pouco mais difícil, mas consegui, agora, para 5, não consegui achar um padrão de mudança para cada algarismo.
Alguém teria alguma forma de me ajudar? Alguma dica de como buscar diminuir a quantidade de cálculos?
Muito obrigado de qualquer modo, att.
Não entendi muito bem qual o objetivo do seu código. Eu quero dizer: você quer que as cinco variáveis atinjam o valor de X e executem uma função?
Seria algo como isso:
/applications/core/interface/imageproxy/imageproxy.php?img=http://i.imgur.com/ssq0AMZ.png?1&key=ae08dfdab09796ccf7163395bc2094679501f3e9edc0ddfe5ab77eb582265233" alt="ssq0AMZ.png?1" />
Olha o seu código realmente faz inúmeros cálculos, fazendo ser demorada a execução.
Eu consegui reduzir um pouco do tempo, alterando a segunda linha, que ficou assim: V = X + 1
Se o seu objetivo é que na última condição todas as cinco variáveis realmente possuam valores distintos e se somados resultam em X, o código está errado. Você precisou zerar as variáveis, quando elas atingiram X + 1, fazendo com que percam o valor, antes de chegar na última decisão.
Se estiveres tentando fazer isso que falei, acho que vale a pena tentar uma outra lógica.
Me atualiza mais, aí! Acho que entendi errado.