Saltar al contenido

El tributo escalonado

Enunciado

Cada otoño, los carros de grano entran a la ciudad de Ur y el escriba cobra el tributo por tramos. Si los topes son 100 y 500 y las tasas 0, 10 y 20 por ciento, los primeros 100 sacos no pagan, los que van del 101 al 500 pagan 10% y los que pasan de 500 pagan 20%. Cada tramo paga solo por los sacos que caen en él.

Escribe una función que reciba limites (los topes, enteros positivos de menor a mayor), tasas (porcentajes enteros, siempre una más que topes: la última es la del tramo sin tope) y cosecha (sacos, un entero de 0 en adelante), y regrese el tributo en sacos, como número. Puede tener decimales: no lo redondees. limites puede venir vacía: entonces toda la cosecha paga la única tasa.

Con 800 sacos: 100 × 0% + 400 × 10% + 300 × 20% = 0 + 40 + 60 = 100.

Ejemplos

  • Llega al último tramo

    [100, 500], [0, 10, 20], 800 → 100

  • Se queda en el tramo de en medio

    [100, 500], [0, 10, 20], 300 → 20

  • No sale del primer tramo

    [100, 500], [0, 10, 20], 80 → 0

  • Justo en un tope

    [100, 500], [0, 10, 20], 500 → 40

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def paga(limites, tasas, cosecha):
    pass

JavaScript

function paga(limites, tasas, cosecha) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(n)

Ver todos los retos →