Actualmente tengo una lista en Javascript:
sea x = [1.0, 2.5, 5.0, 20.0, 50.0, 100.0, 500.0, 2000.0, 5000.0] donde cada valor de esto es una moneda de dólar.
Mi problema es el siguiente, necesito alguna ecuación para que Javascript elija la menor cantidad posible de monedas para llegar al máximo en el valor deseado.
Daré un ejemplo:
Necesito la menor cantidad de monedas posible para alcanzar un máximo de 5,5 USD. Usaría una moneda de 2,5 USD y 3 monedas de 1,0 USD para llegar a 5,5 USD.
Restricción: El valor obtenido no puede exceder el valor deseado.
¿Qué función matemática usaría para esto? ¿O alguien sabe un nombre técnico dado a este tipo de ecuación para que yo busque? Bueno, nunca hubo algo así.
¡Tienes que escribir la lógica, ninguna función incorporada como tal se puede hacer fácilmente con reduce!
let a = [1.0, 2.5, 5.0, 20.0, 50.0, 100.0, 500.0, 2000.0, 5000.0]; let query = 80.0; while (query > 0) { //find closest maximum number const output = a.filter(t => t <= query).reduce((prev, curr) => Math.abs(curr - query) < Math.abs(prev - query) ? curr : prev); query = query - output; console.log(output); }