› Foros › Off-Topic › Miscelánea
seaman escribió:Lo haces mal. Pones 5 variables y son solo 3.
Cobre =x/4
Plata = x/2
Oro = x
Dices que una de oro equivale a dos platas o 4 cobres.
seaman escribió:Lo haces mal. Pones 5 variables y son solo 3.
Cobre = 4x
Plata = 2x
Oro = x
Dices que una de oro equivale a dos platas o 4 cobres.
O lo que yo haría, repartirlos aleatoriamente a mano y ya está
descoat escribió:seaman escribió:Lo haces mal. Pones 5 variables y son solo 3.
Cobre =x/4
Plata = x/2
Oro = x
Dices que una de oro equivale a dos platas o 4 cobres.
Digo yo
[FlooD1993] escribió:Lo que quieres resolver es un problema de programación entera.
Supongamos que queremos el triple de cobre que de plata y el doble de plata que de oro.
Tus datos serían éstos:
O = Número de monedas de oro
P = Número de monedas de plata
C = Número de monedas de cobre
T = Valor total de todas las monedas que tienes, independientemente de su distribución (conocido)
Tus restricciones son:
4*O + 2*P + C = T
O, P, C >= 0
La función objetivo, sería algo así como:
F.O: f(o,p,c) = MIN (x*(3*P/C) + y*(2*O/P)), donde x, y son dos variables por si quieres asignar más peso a un ratio que al otro.
--------------------------------------------
Método de resolución CUTRE:
Creo que lo más fácil es que te calcules cuánto dinero tienes, expresado en cobre (4*oro + 2*plata + cobre), imagínate que te da 90.
Lo siguiente que quieres es establecer una proporción. Si quieres el triple de cobre que de plata, y el doble de plata que de oro, quiere decir que para el producto de 2·3 = 6 de cobre, deberías tener (6/3 =) 2 de plata y (2/2 =) 1 de oro.
Ése es el número mínimo de monedas que necesitas para que tu proporción se cumpla (obviando la solución trivial, todas las variables cero). El valor total de eso sería 6*1 + 2*2 + 4*1 = 14 monedas de cobre. El factor por el que habría que multiplicar para hallar como repartir nuestro dinero en las diferentes monedas sería (90/14 ~=) 6.42857, pero suponiendo que sólo nos interesan cantidades enteras, nos quedamos con la parte entera de ese número: 6. Por lo que a 90 nos aproxaríamos con
6*6 = 36 monedas de cobre
2*6 = 12 monedas de plata
1*6 = 6 monedas de oro
Con un valor total de 14*6 = 84 cobres.
Te faltarían por repartir 6 cobres. Nótese que este valor siempre va a ser menor estrictamente que el valor total del cobre mínimo necesario para cumplir la proporción (en este caso 14).
Lo siguiente que nos interesa es como repartir esos 6 cobres en las diferentes monedas de forma que nos desviemos lo mínimo posible de la proporción.
Una primera idea (como dirían los angloparlantes, "naive approach") es descomponer esos 6 cobres de todas las formas posibles:
6 cobre
1 plata - 4 cobre
2 plata - 2 cobre
3 plata
1 oro - 2 cobre
1 oro - 1 plata
Y ver qué proporciones obtienes con cada una de ellas.O lo que yo haría, repartirlos aleatoriamente a mano y ya está