From da592e92b4c6b70feb9d1857c8854d77bac25b29 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Mon, 23 Jan 2017 18:23:32 +1100 Subject: Increased speed of vote transfer slightly --- src/Election.hs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Election.hs b/src/Election.hs index e97eb69..60fd78f 100644 --- a/src/Election.hs +++ b/src/Election.hs @@ -280,9 +280,11 @@ addToTransferMap counter mapKeys transferMap traceToAdd = do let newTraces = map (addToTrace traceToAdd) mapKeys keyed = zip mapKeys newTraces noDupes = filter (not . criteriaHasDupe . getCriteria . snd) keyed - counted <- mapM (\(k,t) -> Sen.doCount counter (getCriteria t) >>= (\x -> return (k,[(x,t)]))) noDupes - let noZeros = filter ((/= 0) . fst . head . snd) counted - return (Map.unionWith (++) transferMap (Map.fromList noZeros)) + counted <- mapM (\(k,t) -> Sen.doCount counter (getCriteria t) >>= (\x -> return (k,(x,t)))) noDupes + let notZero (k,xt) = floor ((fromIntegral (fst xt)) * getTransferVal (snd xt)) > 0 + noZeroMap = filter notZero counted + listed = map (\(k,xt) -> (k,xt:[])) noZeroMap + return (Map.unionWith (++) transferMap (Map.fromList listed)) -- cgit