Solución

@abrahamjlr·20/4/2026TypeScript
solution.tsTypeScript
RESIDENTIAL_LOW_THRESHOLD: int = 100
RESIDENTIAL_MEDIUM_THRESHOLD: int = 300
RESIDENTIAL_LOW_RATE: float = 0.10
RESIDENTIAL_MEDIUM_RATE: float = 0.15
RESIDENTIAL_HIGH_RATE: float = 0.20

COMMERCIAL_RATE: float = 0.18
COMMERCIAL_DISCOUNT_THRESHOLD: int = 500
COMMERCIAL_DISCOUNT: float = 0.10

INDUSTRIAL_RATE: float = 0.12
INDUSTRIAL_DISCOUNT_THRESHOLD: int = 1000
INDUSTRIAL_DISCOUNT: float = 0.15
INDUSTRIAL_FIXED_FEE: int = 50

MINIMUM_BILL_AMOUNT: int = 5


def  calculate_residential_cost(kwh : int) -> float:
    if kwh <= RESIDENTIAL_LOW_THRESHOLD:
        return kwh * RESIDENTIAL_LOW_RATE

    cost: float = 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: float = kwh * COMMERCIAL_RATE

    if kwh > COMMERCIAL_DISCOUNT_THRESHOLD:
        cost *= (1 - COMMERCIAL_DISCOUNT)
    return cost

def calculate_industrial_cost(kwh : int) -> float:
    cost: float = 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: float = 0.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
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.