Cambio

Cambio

Difícil

Introducción

En la mística aldea de Coinholt, estás detrás del mostrador de tu panadería, colocando una nueva tanda de bollería. La puerta se abre con un chirrido y entra Denara, una hábil comerciante con buen ojo para los productos de calidad. Tras una comida rápida, desliza por el mostrador una moneda reluciente que representa un valor de 100 unidades.

Sonríes, coges la moneda y echas un vistazo al coste total de la comida: 88 unidades. Eso significa que tienes que devolver 12 unidades de cambio.

Denara extiende la mano esperando. «Dame las menos monedas posibles», dice con una sonrisa. «Mi bolsa ya está llena y no quiero arriesgarme a perderlas por el camino.»

Sabes que tienes varias opciones. «Tenemos Lumis (valor 10 unidades), Viras (valor 5 unidades) y Zenth (valor 2 unidades) para dar el cambio.»

Calculas rápidamente las posibilidades en tu cabeza:

  • un Lumis (1 × 10 unidades) + un Zenth (1 × 2 unidades) = 2 monedas en total
  • dos Viras (2 × 5 unidades) + un Zenth (1 × 2 unidades) = 3 monedas en total
  • seis Zenth (6 × 2 unidades) = 6 monedas en total

«La mejor opción son dos monedas: un Lumis y un Zenth», dices mientras le entregas el cambio.

Denara sonríe, claramente impresionada. «Como siempre, has acertado.»

Instrucciones

Determina el menor número de monedas que hay que dar a un cliente para que la suma de sus valores sea igual a la cantidad correcta de cambio.

Ejemplos

  • Una cantidad de 15 con los valores de moneda disponibles [1, 5, 10, 25, 100] debe devolver una moneda de valor 5 y una moneda de valor 10, o [5, 10].
  • Una cantidad de 40 con los valores de moneda disponibles [1, 5, 10, 25, 100] debe devolver una moneda de valor 5, una moneda de valor 10 y una moneda de valor 25, o [5, 10, 25].
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Go Exercism

¿Listo para empezar Cambio?

Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.