Last active
December 25, 2015 01:49
-
-
Save jennifersmith/6898512 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defn make-cheese | |
[name | |
region | |
country | |
aoc? | |
pdo? | |
doc? | |
milk-origin | |
milk-origin-subspecies | |
pastuerized? | |
aging-time | |
mould-type]) | |
(make-cheese | |
"Bleu de Gex" | |
"Jura" | |
"France" | |
true | |
false | |
false | |
:cows | |
"Montbéliard" | |
false | |
(weeks 3) | |
"Penicillium glaucum") | |
(make-cheese | |
"Stilton" | |
["Derbyshire" "Leicestershire" "Nottinghamshire"] | |
"United Kingdom" | |
false | |
true | |
false | |
:cows | |
"local" | |
true | |
(weeks 9) | |
"Penicillium roqueforti") | |
{ :name "Stilton" | |
:milk {:origin :cows | |
:origin-subspecies "local" | |
:pasteurized? true} | |
:mould-type "Penicillium roqueforti" | |
:region ["Derbyshire" | |
"Leicestershire" | |
"Nottinghamshire"] | |
:country "United Kingdom" | |
:aging-time nil} | |
(defn calculate-olfactory-offence | |
[{:keys [milk mould-type aging-time washing-solution]}] | |
(let [pasteurization-factor (if (:pasteurized? milk) 0.5 1)] | |
(* aging-time | |
(+ | |
(milk-type->smell (:milk-type milk)) | |
pasteurization-factor | |
(mould->smell mould-type) | |
(washing-solution->smell washing-solution->smell))))) | |
(defn lactose-levels [{:keys [milk quantity]}] | |
(if (:pastuerized? milk) | |
(calculate-pastuerized-lactose-levels quantity (:milk-origin milk)))) | |
(defn sell-by-date [{:keys [milk mould-type]}] | |
(max (sell-by-date milk) (sell-by-date mould-type))) | |
(defn make-mozarella [citric-acid rennet milk] | |
(let [ | |
[curds whey] | |
(separate | |
(stir-for (minutes 5) | |
(warm-to (farenheit 105) | |
(cut-into-squares | |
(leave-until-turned-into-curds (minutes 5) | |
(combine | |
(dissolve-in-water rennet) | |
(warm-to (farenheit 90) milk)))))))])) | |
(defn cheese-smell-analyser [cheeses-to-assess] | |
(->> cheeses-to-assess | |
(map parse-cheese-ids) | |
(map load-cheese-by-id) | |
(map #(select-keys % [:mould-type :aging-time])) | |
(map get-odour-level) | |
(reduce #(merge-with max %1 %2) {}))) | |
;;;;;;;; | |
(defn milk->smell [{:keys [milk-type is-pasteurized?]}] | |
(+ | |
(if is-pasterurized? 0.5 1) | |
(milk-type->smell milk-type))) | |
(defn lactose-levels [{:keys [milk-origin is-pasteurized?]}] | |
(if is-pasteurized? | |
(calculate-pasteurized-lactose-levels milk-origin) | |
(calculate-pasteurized-lactose-levels milk-origin))) | |
(defn make-mozarella [citric-acid rennet milk] | |
(zipmap [:curds :whey] | |
(separate | |
(stir-for (minutes 5) | |
(warm-to (farenheit 105) | |
(cut-into-squares | |
(leave-until-turned-into-curds | |
(minutes 5) | |
(combine | |
(dissolve-in-water rennet) | |
(warm-to (farenheit 90) milk))))))))) | |
(defn make-mozarella-improved [citric-acid rennet milk] | |
(let [ | |
rennet-solution (dissolve-in-water rennet) | |
warmed-milk (warm-to (farenheit 90) milk)] | |
(->> [rennet-solution warmed-milk] | |
(combine) | |
(leave-until-turned-into-curds) | |
(cut-into-squares) | |
(warm-to (farenheit 105)) | |
(stir-for (minutes 5)) | |
(separate) | |
(zipmap [:curds :whey])))) | |
(defn cheese-smell-analyser-2 [cheeses-to-assess] | |
(->> cheeses-to-assess | |
(load-cheeses) | |
(map parse-cheese-ids) | |
(map get-odour-level) | |
(reduce calculate-stats))) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment