Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,9 @@
|
|||
(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)))
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
(defn knapsacks []
|
||||
(let [pan (struct item 3000 0.3 0.025)
|
||||
ich (struct item 1800 0.2 0.015)
|
||||
gol (struct item 2500 2.0 0.002)
|
||||
types [pan ich gol]
|
||||
max-w 25.0
|
||||
max-v 0.25
|
||||
iters #(range (inc (max-count % max-w max-v)))]
|
||||
(filter (complement nil?)
|
||||
(pmap
|
||||
#(let [[p i g] %
|
||||
w (total :weight types %)
|
||||
v (total :volume types %)]
|
||||
(if (and (<= w max-w) (<= v max-v))
|
||||
(with-meta (struct item (total :value types %) w v) {:p p :i i :g g})))
|
||||
(for [p (iters pan)
|
||||
i (iters ich)
|
||||
g (iters gol)]
|
||||
[p i g])))))
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
(defn best-by-value [ks]
|
||||
(reduce #(if (> (:value %1) (:value %2)) %1 %2) ks))
|
||||
|
||||
(defn print-knapsack[k]
|
||||
(let [ {val :value w :weight v :volume} k
|
||||
{p :p i :i g :g} ^k]
|
||||
(println "Maximum value:" (float val))
|
||||
(println "Total weight: " (float w))
|
||||
(println "Total volume: " (float v))
|
||||
(println "Containing: " p "Panacea," i "Ichor," g "Gold")))
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
(defn all-best-by-value [ks]
|
||||
(let [b (best-by-value ks)]
|
||||
(filter #(= (:value b) (:value %)) ks)))
|
||||
|
||||
(defn print-knapsacks [ks]
|
||||
(doseq [k ks]
|
||||
(print-knapsack k)
|
||||
(println)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue