Saltar al contenido

La mesa del cartógrafo

Enunciado

Palma de Mallorca, 1375. Yehuda dibuja cartas náuticas y su mesa solo tiene espacio para cupo cartas abiertas; las demás duermen enrolladas en la bodega. Recibes pedidos, la lista de las cartas que va a pedir, en orden (enteros; puede venir vacía y con repetidos), y cupo, un entero mayor que 0. La mesa empieza vacía. Por cada pedido: si la carta ya está en la mesa, no baja, y esa carta pasa a ser la usada más recientemente. Si no está, baja por ella; si la mesa ya tiene cupo cartas, antes devuelve la que lleva más tiempo sin usarse, y la nueva queda como la más reciente. Regresa un entero: cuántas veces bajó.

Con [1, 2, 3, 1, 4, 2] y cupo 3: baja por el 1, el 2 y el 3. El 1 ya está, así que no baja, y ahora el que lleva más sin usarse es el 2. Por el 4 baja y devuelve el 2; por el 2 baja otra vez y devuelve el 3, que ya es el más viejo. Bajó 5 veces.

Ejemplos

  • El del ejemplo

    [1, 2, 3, 1, 4, 2], 3 → 5

  • Usarla la salva

    [1, 2, 1, 3, 1, 2], 2 → 4

  • Siempre la misma

    [4, 4, 4, 4], 1 → 1

  • Cupo de una sola

    [1, 2, 1, 2], 1 → 4

  • Caben todas

    [3, 1, 3, 2, 1], 5 → 3

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

Empiezas con esto

Python

def veces_que_baja(pedidos, cupo):
    pass

JavaScript

function vecesQueBaja(pedidos, cupo) {
}
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 →