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) |
|||
⚫ | |||
. ( (+) . (!!) s |
|||
. floor |
|||
⚫ | |||
) |
|||
. 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 = |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
] |
|||
main :: IO () |
main :: IO () |
||
main = |
|||
main = print $ fivenum testValues</lang> |
|||
print $ |
|||
fivenum |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
]</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> |