Solución

@santidy240_d86406ff·hace 5dTypeScript
solution.tsTypeScript
export function calculateElectricityBill(kilowatts: number, type: string): number {

  const plans={
    residential:residential,
    commercial:commercial,
    industrial:industrial
  }
 

  function minimumCharge(charge:number){
    const MINIUM_CHARGE=5
     if (charge < MINIUM_CHARGE)  return  MINIUM_CHARGE;
    return +charge.toFixed(1)
  }

  function industrial(kilowatts:number){
    let charge=0

    const TIER_MAX_KWH=1000

    const RATE_TIER=0.12

    const FIXED_CHARGE=50

    const DISCOUNT=0.85

    if (kilowatts > TIER_MAX_KWH) {
      charge = kilowatts * RATE_TIER * DISCOUNT + FIXED_CHARGE;
    } else {
      charge = kilowatts * RATE_TIER + FIXED_CHARGE;
    }

    return minimumCharge(charge)
  }

  function commercial(kilowatts:number){
    let charge=0

    const TIER_MAX_KWH=500

    const RATE_TIER_1=0.18

    const DISCOUNT=0.90

    if (kilowatts > TIER_MAX_KWH) {
      charge = kilowatts * RATE_TIER_1 * DISCOUNT;
    } else {
      charge = kilowatts * RATE_TIER_1;
    }

    return minimumCharge(charge)
  }

  function residential(kilowatts:number){

    let charge=0

    const TIER_1_MAX_KWH=100
    const TIER_2_MAX_KWH=300
    const RESIDENTIAL_TIER_2_CAPACITY = TIER_1_MAX_KWH -TIER_2_MAX_KWH;

    const RATE_TIER_1=0.10
    const RATE_TIER_2=0.15
    const RATE_TIER_3=0.20


    if (kilowatts <= TIER_1_MAX_KWH) {
      charge = kilowatts * RATE_TIER_1;
    } else if (kilowatts <= TIER_2_MAX_KWH) {
      charge = TIER_1_MAX_KWH * RATE_TIER_1 + (kilowatts - TIER_1_MAX_KWH) * RATE_TIER_2;
    } else {
      charge = TIER_1_MAX_KWH * RATE_TIER_1 + 200 * RATE_TIER_2 + (kilowatts - TIER_2_MAX_KWH) * RATE_TIER_3;
    }

    return minimumCharge(charge)
  }

  return plans[type](kilowatts);
}
0respuestas
Respuestas

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.