En Canadá, el centavo ya no circula. Los pagos en efectivo se redondean a los 5 centavos más cercanos.
El dinero se puede ahorrar dividiendo las compras. Por ejemplo, dos artículos de $ 1.02 cuestan $ 2.04, que se redondean a $ 2.05, pero al comprar los artículos en compras separadas, cada precio se redondea a $ 1.00 por un total de $ 2.00. Sin embargo, al comprar dos artículos a $ 1.03 cada uno, es mejor comprarlos en una sola compra.
Otra forma de ahorrar dinero es usar una tarjeta de crédito cuando el redondeo es desfavorable, porque los pagos de crédito no son redondeados. Si queremos dos artículos de $ 1.04, el precio total se redondeará a $ 2.10 independientemente de cómo dividimos las compras. Por lo tanto, debemos pagar estos artículos con una tarjeta de crédito.
Escriba una función o programa que acepte una lista de precios de artículos como enteros en centavos y genere el precio total más bajo posible (en centavos) para aquellos artículos que se pueden lograr a través de una secuencia de compras, ya sea en efectivo o con crédito.
El código más corto gana.
Casos de prueba
[] : 0
[48] : 48
[92, 20] : 110
[47, 56, 45] : 145
[55, 6, 98, 69] : 225
[6, 39, 85, 84, 7] : 218
[95, 14, 28, 49, 41, 39] : 263
[92, 6, 28, 30, 39, 93, 53] : 335
[83, 33, 62, 12, 34, 29, 18, 12] : 273
[23, 46, 54, 69, 64, 73, 58, 92, 26] : 495
[19, 56, 84, 23, 20, 53, 96, 92, 91, 58] : 583
[3, 3, 19, 56, 3, 84, 3, 23, 20, 53, 96, 92, 91, 58, 3, 3] : 598
[2, 3, 4, 4, 4, 4, 4] : 19
s.reduce(:+)(normalmente incluso no necesita paréntesis, pero en su caso ...) y en líneampara 2 caracteres adicionales.