Saltar al contenido

Los contrapesos del satélite

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):
    pass

JavaScript

function formas(masas, meta) {
}
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(2ⁿ)

Ver todos los retos →