Fivenum: Difference between revisions

Content added Content deleted
(Add Rust implementation)
m (→‎{{header|Haskell}}: Tidied, applied Ormolu.)
Line 915: Line 915:
<lang haskell>import Data.List (sort)
<lang haskell>import Data.List (sort)


fivenum
fivenum :: [Double] -> [Double]
:: (Fractional a, Ord a)
=> [a] -> [a]
fivenum [] = []
fivenum [] = []
fivenum xs
fivenum xs
| l >= 5 =
| l >= 5 =
fmap
fmap
( (/ 2)
((/ 2) . ((+) . (!!) s . floor <*> (!!) s . ceiling) . pred)
. ( (+) . (!!) s
. floor
<*> (!!) s . ceiling
)
. pred
)
[1, q, succ l / 2, succ l - q, l]
[1, q, succ l / 2, succ l - q, l]
| otherwise = s
| otherwise = s
Line 929: Line 933:
q = realToFrac (floor $ (l + 3) / 2) / 2
q = realToFrac (floor $ (l + 3) / 2) / 2
s = sort xs
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 :: 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}}
{{out}}
<pre>[-1.95059594,-0.676741205,0.23324706,0.746070945,1.73131507]</pre>
<pre>[-1.95059594,-0.676741205,0.23324706,0.746070945,1.73131507]</pre>