Sparkline in unicode: Difference between revisions

→‎{{header|Haskell}}: Tidied, pruned out one import.
No edit summary
(→‎{{header|Haskell}}: Tidied, pruned out one import.)
Line 1,076:
import Data.List (findIndex)
import Data.Maybe (maybe)
import Control.Arrow ((&&&))
 
sparkLine :: [Float] -> String
sparkLine xs =
in fmap (maybe '█' ("▁▂▃▄▅▆▇" !!) . flip findIndex lbounds . flip (>)) <$> xs
let (mn, mx) = (minimum &&& maximum) xs
where
w = (mx - mn) / 8
(mn, lboundsmx) = ((mn +,) . (wminimum <*)) <$> [1 ..maximum) 7]xs
w = (mx - mn) / 8
in fmap (maybe '█' ("▁▂▃▄▅▆▇" !!) . flip findIndex lbounds . flip (>)) xs
lbounds = (mn +) . (w *) <$> [1 .. 7]
 
parseFloats :: String -> [Float]
Line 1,090:
main :: IO ()
main =
mapM_ putStrLn $
((sparkLine . parseFloats) <$>
putStrLn
[ "0, 1, 19, 20"
((sparkLine . parseFloats) <$>
[, "0, 1999, 4000, 4999, 197000, 207999"
, "1 2 ,3 "0,4 999,5 4000,6 4999,7 7000,8 7 6 5 4 3 2 79991"
, "1.5, 20.5 3.5, 42.5 5.5, 6 7 84.5 7.5, 6 .5 4 3 2 1"
])</lang>
, "1.5, 0.5 3.5, 2.5 5.5, 4.5 7.5, 6.5"
])</lang>
{{Out}}
<pre>▁▁██
9,655

edits