Skip to content

Instantly share code, notes, and snippets.

@dmwit
Last active June 21, 2019 21:47
Show Gist options
  • Save dmwit/e7cb2a632e15aff74924963702d9b824 to your computer and use it in GitHub Desktop.
Save dmwit/e7cb2a632e15aff74924963702d9b824 to your computer and use it in GitHub Desktop.
import Data.List
import Data.Maybe
import Data.Ord
shareArea = 85
pizzaArea size = pi * (size/2)^2
totalPizzaArea = sum . map pizzaArea
sufficient area sizes | area < 0 = [[]]
sufficient area [] = []
sufficient area (size:sizes)
= map (size:) (sufficient (area - pizzaArea size) (size:sizes))
++ sufficient area sizes
-- chooseSmallestArea = minimumBy (comparing totalPizzaArea)
chooseCheapest prices = minimumBy (comparing (sum . map (fromJust . flip lookup prices)))
makeOrder shares prices = chooseCheapest prices (sufficient (shareArea*shares) (map fst prices))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment