Lhakpa é uma sherpa, guia e carregadora de montanha. Depois de meses de planejamento cuidadoso, a expedição para a qual Lhakpa trabalha está prestes a partir. Ela receberá o valor que carregou até o acampamento base.
Diante dela há muitos itens, cada um com um valor e um peso. Lhakpa levaria todos os itens de bom grado, mas sua mochila suporta apenas um determinado peso.
Sua tarefa é determinar quais itens levar para que o valor total da seleção dela seja o maior possível, levando em conta a capacidade de carga da mochila.
Os itens serão representados como uma lista de itens. Cada item terá um peso e um valor. Todos os valores fornecidos serão estritamente positivos. Lhakpa pode levar apenas um de cada item.
Por exemplo:
Items: [
{ "weight": 5, "value": 10 },
{ "weight": 4, "value": 40 },
{ "weight": 6, "value": 30 },
{ "weight": 4, "value": 50 }
]
Knapsack Maximum Weight: 10
No exemplo acima, o primeiro item tem peso 5 e valor 10, o segundo item tem peso 4 e valor 40, e assim por diante. Neste exemplo, Lhakpa deve levar o segundo e o quarto item para maximizar seu valor, que, neste caso, é 90. Ela não consegue mais do que 90, pois sua mochila tem um limite de peso de 10.
Os itens são representados por records, definidos em item.lfe.
Use item-weight para obter o peso e item-value para obter o 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)
Crie sua conta no Exercism para aprender e dominar Lisp Flavoured Erlang com 68 exercícios e mentoria humana de verdade, tudo de graça.