Fivenum: Difference between revisions

116 bytes added ,  3 years ago
m
→‎{{header|Haskell}}: Tidied, applied Ormolu.
(Add Rust implementation)
m (→‎{{header|Haskell}}: Tidied, applied Ormolu.)
Line 915:
<lang haskell>import Data.List (sort)
 
fivenum :: [Double] -> [Double]
:: (Fractional a, Ord a)
=> [a] -> [a]
fivenum [] = []
fivenum xs
| l >= 5 =
fmap
( (/ 2)
((/ 2) . ((+) . (!!) s . floor <*> (!!) s . ceiling) . pred)
. ( (+) . (!!) s
. floor
((/ 2) . ((+) . (!!) s . floor <*> (!!) s . ceiling) . pred)
)
. pred
)
[1, q, succ l / 2, succ l - q, l]
| otherwise = s
Line 929 ⟶ 933:
q = realToFrac (floor $ (l + 3) / 2) / 2
s = sort xs
 
testValues :: [Double]
testValues =
[ 0.14082834
, 0.09748790
, 1.73131507
, 0.87636009
, -1.95059594
, 0.73438555
, -0.03035726
, 1.46675970
, -0.74621349
, -0.72588772
, 0.63905160
, 0.61501527
, -0.98983780
, -1.00447874
, -0.62759469
, 0.66206163
, 1.04312009
, -0.10305385
, 0.75775634
, 0.32566578
]
 
main :: IO ()
main =
main = print $ fivenum testValues</lang>
print $
fivenum
[ 0.14082834,
, 0.09748790,
, 1.73131507,
, 0.87636009,
, -1.95059594,
, 0.73438555,
, -0.03035726,
, 1.46675970,
, -0.74621349,
, -0.72588772,
, 0.63905160,
, 0.61501527,
, -0.98983780,
, -1.00447874,
, -0.62759469,
, 0.66206163,
, 1.04312009,
, -0.10305385,
, 0.75775634,
, 0.32566578
]</lang>
{{out}}
<pre>[-1.95059594,-0.676741205,0.23324706,0.746070945,1.73131507]</pre>
9,655

edits