CodeForge

JavaScript de Cero a Experto / Proyectos + retos

Reto de entrevista: memoize (caché de resultados)

Reto20 min60 XP

Una función que envuelve a otra y RECUERDA sus resultados: si ya calculó algo para cierto argumento, la próxima vez lo devuelve al instante sin recalcular. Se llama memoización, y es el primer "decorador" serio que construyes —la base mental de debounce y throttle, los jefes finales que siguen.

Reto

memoize: recordar para no recalcular

Media15 min60 XP(×2 sin mirar la solución)

Qué debes construir

Una función memoizar(fn) que reciba una función y devuelva una versión "con memoria": para los mismos argumentos, calcula UNA vez y luego devuelve el resultado guardado.

js
const sumaLenta = (a, b) => a + b;
const suma = memoizar(sumaLenta);
suma(2, 3);   // calcula → 5
suma(2, 3);   // ¡recuerda! devuelve 5 sin volver a calcular

Reglas

  • La función devuelta debe dar el mismo resultado que la original.
  • Con los mismos argumentos, la original se ejecuta UNA sola vez.
  • Pasa los tests del playground (uno cuenta cuántas veces se llamó la original).

15:00

Cuando estés listo, arranca el reloj.

Qué sigue

Tienes el patrón decorador dominado. Ahora los dos jefes finales del módulo, hermanos y opuestos: throttle (deja pasar como máximo una vez cada X) y debounce (espera a que pares). Primero throttle —el que controla el caudal.