- Reto #28
- Fecha publicación enunciado: 11/07/22
- Dificultad: MEDIA
- Origen: https://github.com/mouredev/Weekly-Challenge-2022-Kotlin/blob/main/app/src/main/java/com/mouredev/weeklychallenge2022/Challenge28.kt
Simula el funcionamiento de una máquina expendedora creando una operación que reciba dinero (array de monedas) y un número que indique la selección del producto.
- El programa retornará el nombre del producto y un array con el dinero de vuelta (con el menor número de monedas).
- Si el dinero es insuficiente o el número de producto no existe, deberá indicarse con un mensaje y retornar todas las monedas.
- Si no hay dinero de vuelta, el array se retornará vacío.
- Para que resulte más simple, trabajaremos en céntimos con monedas de 5, 10, 50, 100 y 200.
- Debemos controlar que las monedas enviadas estén dentro de las soportadas.
defmodule VendingMachine do
def comprar(dinero_ingresado, costo_producto) when is_integer(dinero_ingresado) and dinero_ingresado >= 0 and is_integer(costo_producto) and costo_producto >= 0 do
if dinero_ingresado < costo_producto do
{:error, "No tienes suficiente dinero para comprar este producto."}
else
{:ok, "Compra exitosa. Tu cambio es #{dinero_ingresado - costo_producto}."}
end
end
end
# Ejemplo de uso:
dinero_ingresado = 100 # Aquí ingresa la cantidad de dinero
costo_producto = 75 # Aquí ingresa el costo del producto
case VendingMachine.comprar(dinero_ingresado, costo_producto) do
{:ok, mensaje} ->
IO.puts("¡#{mensaje}")
{:error, mensaje} ->
IO.puts("Error: #{mensaje}")
end
¡Compra exitosa. Tu cambio es 25.