Lhakpa es guía de montaña y porteadora Sherpa. Tras meses de una planificación minuciosa, la expedición para la que trabaja Lhakpa está a punto de partir. Se le pagará el valor de lo que llevó hasta el campo base.
Frente a ella hay muchos objetos, cada uno con un valor y un peso. Lhakpa no dudaría en llevárselos todos, pero su mochila solo puede cargar cierto peso.
Tu tarea consiste en determinar qué objetos tomar para que el valor total de su selección sea el máximo posible, teniendo en cuenta la capacidad de carga de la mochila.
Los objetos se representarán como un array de objetos. Cada objeto tendrá un peso y un valor. Todos los valores dados serán estrictamente positivos. Lhakpa solo puede tomar uno de cada objeto.
Por ejemplo:
Items: [
{ "weight": 5, "value": 10 },
{ "weight": 4, "value": 40 },
{ "weight": 6, "value": 30 },
{ "weight": 4, "value": 50 }
]
Knapsack Maximum Weight: 10
En el ejemplo anterior, el primer objeto tiene un peso de 5 y un valor de 10, el segundo objeto tiene un peso de 4 y un valor de 40, y así sucesivamente. En este ejemplo, Lhakpa debería tomar el segundo y el cuarto objeto para maximizar su valor, que, en este caso, es 90. No puede conseguir más de 90, ya que su mochila tiene un límite de peso de 10.
Los artículos se representan mediante registros, definidos en item.lfe.
Usa item-weight para obtener el peso y item-value para obtener el valor.
;; Create an item with weight=5, value=50
(set item (make-item weight 5 value 50))
;; Get the weight. Returns 5.
(item-weight item)
;; Get the value. Returns 50.
(item-value item)
Regístrate en Exercism para aprender y dominar Lisp Flavoured Erlang con 68 ejercicios y mentoría humana real, todo gratis.