Saltar al contenido

Los tres costales

Enunciado

Genaro vende semillas por costal en el mercado y no abre ninguno: lo que pesa el costal, pesa. Le llega un pedido de kilos exactos que hay que completar con tres costales de los que tiene en el puesto, y quiere saber cuáles tres.

Escribe una función que reciba costales, una lista de enteros positivos con los kilos de cada costal (puede traer costales del mismo peso y puede venir vacía), y meta, un entero positivo: los kilos del pedido. Regresa una lista con los pesos de los tres costales que suman la meta, de menor a mayor. Son tres costales distintos del puesto, así que ninguno se cuenta dos veces, aunque haya dos que pesen lo mismo. Si no hay ningún trío que sume la meta, regresa una lista vacía.

Con costales de 2, 7, 4, 9, 5, 1 y 3 kilos y un pedido de 6 kilos, el trío es 1, 2 y 3.

Si hay varios tríos que suman la meta, regresa el que empieza con el costal más ligero; si en ese también empatan, el que siga con el más ligero. Con costales de 1, 2, 3, 4, 5 y 6 y un pedido de 9 sirven tres tríos: 1 con 2 y 6, 1 con 3 y 5, y 2 con 3 y 4. El que se regresa es 1, 2 y 6.

Hay puestos de hasta 20 costales.

Ejemplos

  • El ejemplo

    [2, 7, 4, 9, 5, 1, 3], 6 → [1, 2, 3]

  • Varios tríos sirven

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

  • Ningún trío llega a la meta

    [1, 4, 5, 6, 7, 8, 5, 9], 6 → []

  • Con costales repetidos

    [4, 4, 8, 4], 16 → [4, 4, 8]

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

Empiezas con esto

Python

def tres_costales(costales, meta):
    pass

JavaScript

function tresCostales(costales, 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(n²)

Ver todos los retos →