Solución
solution.tsTypeScript
RESIDENTIAL_LOW_THRESHOLD = 100
RESIDENTIAL_MEDIUM_THRESHOLD = 300
RESIDENTIAL_LOW_RATE = 0.10
RESIDENTIAL_MEDIUM_RATE = 0.15
RESIDENTIAL_HIGH_RATE = 0.20
COMMERCIAL_RATE = 0.18
COMMERCIAL_DISCOUNT_THRESHOLD = 500
COMMERCIAL_DISCOUNT = 0.10
INDUSTRIAL_RATE = 0.12
INDUSTRIAL_DISCOUNT_THRESHOLD = 1000
INDUSTRIAL_DISCOUNT = 0.15
INDUSTRIAL_FIXED_FEE = 50
MINIMUM_BILL_AMOUNT = 5
def calculate_residential_cost(kwh : int) -> float:
if kwh <= RESIDENTIAL_LOW_THRESHOLD:
return kwh * RESIDENTIAL_LOW_RATE
cost = RESIDENTIAL_LOW_THRESHOLD * RESIDENTIAL_LOW_RATE
if kwh <= RESIDENTIAL_MEDIUM_THRESHOLD:
cost += (kwh - RESIDENTIAL_LOW_THRESHOLD) * RESIDENTIAL_MEDIUM_RATE
else:
cost += (RESIDENTIAL_MEDIUM_THRESHOLD - RESIDENTIAL_LOW_THRESHOLD) * RESIDENTIAL_MEDIUM_RATE
cost += (kwh - RESIDENTIAL_MEDIUM_THRESHOLD) * RESIDENTIAL_HIGH_RATE
return cost
def calculate_commercial_cost(kwh : int) -> float:
cost = kwh * COMMERCIAL_RATE
if kwh > COMMERCIAL_DISCOUNT_THRESHOLD:
cost *= (1 - COMMERCIAL_DISCOUNT)
return cost
def calculate_industrial_cost(kwh : int) -> float:
cost = kwh * INDUSTRIAL_RATE
if kwh > INDUSTRIAL_DISCOUNT_THRESHOLD:
cost *= (1 - INDUSTRIAL_DISCOUNT)
return cost + INDUSTRIAL_FIXED_FEE
def calculate_electricity_bill(kwh: int, client_type: str) -> float:
bill = 0
if client_type == "residential":
bill = calculate_residential_cost(kwh)
elif client_type == "commercial":
bill = calculate_commercial_cost(kwh)
elif client_type == "industrial":
bill = calculate_industrial_cost(kwh)
if bill < MINIMUM_BILL_AMOUNT:
return float(MINIMUM_BILL_AMOUNT)
return round(float(bill),2)
exports = calculate_electricity_bill
0respuestas