fork(2) download
  1. pairs = [ (3,5),(5,6),(6,3),(3,5),(5,9),(2,1),(7,5),(4,6),(8,3) ]
  2.  
  3. main = putStrLn . show . snd . findValuable (<= 20) $ pairs
  4.  
  5. findValuable fn = foldl choose (0,[]) . filter (fn . sum . map fst) . combos
  6.  
  7. choose (vx,x) y = if (vx <= vy) then (vy,y) else (vx,x)
  8. where vy = sum . map snd $ y
  9.  
  10. combos [] = [[]]
  11. combos (x:xs) = map (x:) (combos xs) ++ combos xs
  12.  
Success #stdin #stdout 0s 4700KB
stdin
Standard input is empty
stdout
[(3,5),(5,6),(3,5),(5,9),(4,6)]