Rutas
/
Go
Go
/
Ejercicios
/
Librería
Librería

Librería

Difícil

Instrucciones

Para intentar fomentar más ventas de diferentes libros de una popular serie de 5 libros, una librería ha decidido ofrecer descuentos en la compra de varios libros a la vez.

Un ejemplar de cualquiera de los cinco libros cuesta 8 $.

Sin embargo, si compras dos libros diferentes, obtienes un descuento del 5 % en esos dos libros.

Si compras 3 libros diferentes, obtienes un descuento del 10 %.

Si compras 4 libros diferentes, obtienes un descuento del 20 %.

Si compras los 5, obtienes un descuento del 25 %.

Ten en cuenta que si compras cuatro libros, de los cuales 3 son títulos diferentes, obtienes un descuento del 10 % en los 3 que forman parte de un conjunto, pero el cuarto libro sigue costando 8 $.

Tu misión es escribir código que calcule el precio de cualquier cesta de la compra imaginable (que solo contenga libros de la misma serie), aplicando el mayor descuento posible.

Por ejemplo, ¿cuánto cuesta esta cesta de libros?

  • 2 ejemplares del primer libro
  • 2 ejemplares del segundo libro
  • 2 ejemplares del tercer libro
  • 1 ejemplar del cuarto libro
  • 1 ejemplar del quinto libro

Una forma de agrupar estos 8 libros es:

  • 1 grupo de 5 (1.º, 2.º, 3.º, 4.º, 5.º)
  • 1 grupo de 3 (1.º, 2.º, 3.º)

Esto daría un total de:

  • 5 libros con un descuento del 25 %
  • 3 libros con un descuento del 10 %

Lo que da como resultado:

  • 5 × (100 % - 25 %) × 8 $ = 5 × 6,00 $ = 30,00 $, más
  • 3 × (100 % - 10 %) × 8 $ = 3 × 7,20 $ = 21,60 $

Lo que equivale a 51,60 $.

Sin embargo, hay otra forma de agrupar estos 8 libros:

  • 1 grupo de 4 libros (1.º, 2.º, 3.º, 4.º)
  • 1 grupo de 4 libros (1.º, 2.º, 3.º, 5.º)

Esto daría un total de:

  • 4 libros con un descuento del 20 %
  • 4 libros con un descuento del 20 %

Lo que da como resultado:

  • 4 × (100 % - 20 %) × 8 $ = 4 × 6,40 $ = 25,60 $, más
  • 4 × (100 % - 20 %) × 8 $ = 4 × 6,40 $ = 25,60 $

Lo que equivale a 51,20 $.

Y 51,20 $ es el precio con el mayor descuento.

Implementación

Define una única función de Go, Cost, que calcula el coste para un array dado de libros a partir de los descuentos definidos.

Usa la siguiente firma para la función Cost:

func Cost(books []int) int

Cost devolverá el coste total (tras aplicar los descuentos) en centavos. Por ejemplo, para un solo libro, el coste es de 800 centavos, lo que equivale a 8,00 $. Para este ejercicio solo se necesitan cálculos con números enteros.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Go Exercism

¿Listo para empezar Librería?

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