(defstruct item :value :weight :volume) (defn total [key items quantities] (reduce + (map * quantities (map key items)))) (defn max-count [item max-weight max-volume] (let [mcw (/ max-weight (:weight item)) mcv (/ max-volume (:volume item))] (min mcw mcv)))