Los cortes de la tabla
- O(2ⁿ) · Legendaria
- Plan completo
- Python
- JavaScript
- recursión
- listas
- diccionarios
Enunciado
Don Filiberto tiene la carpintería de la esquina y cobra los cortes por el largo de la pieza que mete a la sierra: partir una tabla de 10 centímetros cuesta 10, sin importar por dónde la parta. Le llega una tabla con las marcas de la clienta y tiene que cortarla por todas, pero el orden lo elige él, y ahí está el ahorro: con el primer corte le quedan dos piezas más cortas, y cada corte que sigue se paga sobre la pieza en la que cae.
Escribe una función que reciba largo, un entero de 1 en adelante (los centímetros que mide la tabla), y marcas, una lista de enteros distintos de 1 a largo menos 1: a cuántos centímetros de la orilla izquierda va cada corte. Las marcas vienen en cualquier orden y la lista puede venir vacía. Regresa un entero: lo menos que le puede costar hacer todos los cortes.
Con una tabla de 10 y marcas en 2, 4 y 7, lo más barato cuesta 20.
Cortar primero en el 4 cuesta 10 y deja las piezas de 0 a 4 y de 4 a 10; el corte en el 2 ya cae en una pieza de 4 y el corte en el 7 en una de 6, así que la cuenta es 10 más 4 más 6. Empezar por el 2 sale más caro: 10, luego 8 por el corte en el 4 y 6 por el corte en el 7, son 24.
Con una sola marca no hay nada que elegir: el único corte cuesta largo. Si no hay marcas, no hay nada que cortar y la respuesta es 0.
Hay tablas de hasta 20 marcas.
Ejemplos
El ejemplo
10, [2, 4, 7] → 20
Cortar por la orilla primero sale caro
20, [1, 9, 10, 11, 19] → 51
Una sola marca
8, [3] → 8
Las marcas vienen desordenadas
10, [7, 2, 4] → 20
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def costo_cortes(largo, marcas):
passJavaScript
function costoCortes(largo, marcas) {
}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 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
- Miel a mediasrecursión · listas · comparaciones