Los contrapesos del satélite
- O(2ⁿ) · Legendaria
- Plan completo
- Python
- JavaScript
- recursión
- listas
- operaciones
Enunciado
Yuki Tanaka ajusta el lastre de un satélite antes del lanzamiento. Sobre la mesa tiene piezas sueltas de distintas masas y necesita juntar una masa exacta. Antes de elegir, quiere saber cuántas opciones tiene. Escribe una función que reciba masas, una lista de enteros positivos con la masa de cada pieza (puede venir vacía y puede haber masas repetidas), y meta, un entero de 1 en adelante. Regresa un entero: de cuántas maneras puedes elegir algunas piezas, cada una a lo más una vez, para que sus masas sumen exactamente meta. El orden en que las tomas no importa. Cada pieza cuenta aparte, aunque pese lo mismo que otra: si hay dos de 5, elegir una o la otra da dos maneras distintas.
Con [2, 3, 5, 5, 8] y meta 10 hay 4 maneras: 2 + 8, las dos de 5 juntas, 2 + 3 con la primera de 5 y 2 + 3 con la segunda. Con [4, 6, 1, 3] y meta 7 hay 2: 4 + 3 y 6 + 1. Si ninguna combinación llega justo a la meta, regresa 0.
Ejemplos
El ejemplo
[2, 3, 5, 5, 8], 10 → 4
Dos maneras
[4, 6, 1, 3], 7 → 2
Ninguna combinación llega
[4, 6], 5 → 0
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def formas(masas, meta):
passJavaScript
function formas(masas, meta) {
}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ⁿ)
- Los cortes de la tablarecursión · listas · diccionarios
- Los interruptores del laboratoriorecursión · listas
- Los módulos en cohetesrecursión · listas · booleanos · división
- Los quirófanos del lunesrecursión · listas · comparaciones
- Los remeros de Puntrecursión · listas · comparaciones
- Los votos de la Hansarecursión · listas · comparaciones