Las cucharas del abuelo
- O(2ⁿ) · Legendaria
- Plan completo
- Python
- JavaScript
- recursión
- listas
- índices
Enunciado
El abuelo Anselmo va a hornear el pan de la receta de su madre, pero perdió la taza medidora. Le quedan unas cucharas de distintos tamaños, y cada una la puede llenar las veces que quiera. Antes de empezar, quiere saber cuántas maneras tiene de medir la leche.
Escribe una función que reciba tamanos, una lista de enteros positivos distintos (cuántos mililitros mide cada cuchara; vienen en cualquier orden y la lista puede venir vacía), y cantidad, un entero de 1 a 30: los mililitros que pide la receta. Regresa un entero: de cuántas maneras distintas se junta justo esa cantidad. Solo importa cuántas veces usas cada cuchara, no en qué orden: servir 2 y luego 1 es lo mismo que servir 1 y luego 2.
Con cucharas de 1, 2 y 5 y una receta de 6 hay 5 maneras: seis veces la de 1; cuatro de 1 y una de 2; dos de 1 y dos de 2; tres de 2; una de 1 y una de 5. Con cucharas de 3 y 4 y una receta de 10 solo sirve 3 + 3 + 4, así que regresa 1. Si no hay manera de medirla exacta, regresa 0.
Ejemplos
El primer ejemplo
[1, 2, 5], 6 → 5
Empezar por la más grande no sirve
[3, 4], 10 → 1
No hay manera
[3, 4], 5 → 0
Las cucharas vienen desordenadas
[5, 1, 2], 6 → 5
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def cucharas(tamanos, cantidad):
passJavaScript
function cucharas(tamanos, cantidad) {
}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(2ⁿ)
- Las cuentas de Lilavatirecursión · textos · índices
- Las hornadas de la mañanarecursión · listas · diccionarios
- Las rutas del metrorecursión · listas · ciclos
- Los contrapesos del satéliterecursión · listas · operaciones
- Los cortes de la tablarecursión · listas · diccionarios
- Los interruptores del laboratoriorecursión · listas