DEV Community

Cristian Fernando
Cristian Fernando

Posted on • Edited on

Advent.js🎅🏼| #11: ¿Vale la pena la tarjeta de fidelidad del cine?

¿Vale la pena la tarjeta de fidelidad del cine?

Este mes de diciembre hay películas super interesantes en el cine... y tengo que optimizar cómo gasto el dinero.

Mi cine favorito tiene dos posibilidades:

  • Entrada de un sólo uso: Cuesta 12$ por cada película.

  • Tarjeta de fidelidad: Cuesta 250$ pero que cada vez que vas pagas sólo el 75% del precio del ticket. ¡Lo mejor es que se acumula! Y cada vez que vas, se paga el 75% del precio del ticket que pagaste la última vez.
    Ejemplo de cada una al comprar 3 entradas y el precio que pagaría en total:

// Entrada normal: 12$ * 3 = 36$
// Tarjeta fidelidad: 250$ + (12$ * 0,75) +  (12$ * 0,75 * 0,75) + (12$ * 0,75 * 0,75 * 0,75) = 270,8125$
Enter fullscreen mode Exit fullscreen mode

Necesito una función que, al pasarle las veces que voy a ir al cine, me diga si vale la pena comprar la tarjeta fidelidad o no.

shouldBuyFidelity(1) // false -> Mejor comprar tickets de un sólo uso
shouldBuyFidelity(100) // true -> Mejor comprar tarjeta fidelidad
Enter fullscreen mode Exit fullscreen mode

La dificultad del reto está en encontrar una fórmula sencilla que nos diga el precio con descuento acumulado para la tarjeta fidelidad. 😜

Completa el reto!


Mi solucuón:


Puedes seguir a @midudev y estar pendiente de los retos de Advent.js

Top comments (3)

Collapse
 
vitorx06 profile image
Victor Diaz
function shouldBuyFidelity(times){
  const entradaNormal = 12 * times
  let descuento = 12,
  tarjetaFidelidad = 0 
  for (let i = 1; i <= times; i++){
   descuento *= 0.75
   tarjetaFidelidad += descuento
  }
  if (entradaNormal <= tarjetaFidelidad + 250) return false
  return true
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
thewuiz profile image
Luis Angel Lopez

Esta es mi respuesta, saludos

function shouldBuyFidelity(times) {
let precio, suma=0
for (let i = 0; i < times; i++) {
precio = 12
for (let j = i; j < times; j++) {
precio *= 0.75
}
suma += precio
}
return suma + 250 > times * 12 ? false : true
}

Collapse
 
darito profile image
David Alonso

Esta super interesante el reto ánimo amigo tu puedes!