En la mística aldea de Coinholt, estás detrás del mostrador de tu panadería, acomodando un lote recién hecho de pastelillos. La puerta se abre con un chirrido y entra Denara, una comerciante hábil con muy buen ojo para los productos de calidad. Después de una comida rápida, desliza sobre el mostrador una moneda reluciente que representa un valor de 100 unidades.
Sonríes, tomas la moneda y le echas un vistazo al costo total de la comida: 88 unidades. Eso significa que debes devolver 12 unidades de cambio.
Denara extiende la mano con expectativa. «Solo dame la menor cantidad de monedas», dice con una sonrisa. «Mi bolsa ya está llena y no quiero arriesgarme a perderlas en el camino».
Sabes que tienes algunas opciones. «Tenemos Lumis (vale 10 unidades), Viras (vale 5 unidades) y Zenth (vale 2 unidades) disponibles para dar cambio».
Calculas rápidamente las posibilidades en tu cabeza:
«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, acertaste».
Determina la menor cantidad de monedas que debes darle a un cliente para que la suma de sus valores sea igual al cambio correcto.
| Registro | Uso | Tipo | Descripción |
|---|---|---|---|
$a0 |
entrada | entero | cantidad de monedas de entrada |
$a1 |
entrada | entero | objetivo |
$a2 |
entrada/salida | dirección | array de palabras de monedas que se puede sobrescribir |
$v0 |
salida | entero | cantidad de monedas de salida, -1 si la entrada no es válida |
$t0-9 |
temporal | cualquiera | se usa para almacenamiento temporal |
Regístrate en Exercism para aprender y dominar MIPS Assembly con 70 ejercicios y mentoría humana real, todo gratis.