Fivenum: Difference between revisions
Content deleted Content added
m →{{header|zkl}}: Added additional tests |
Added Julia language |
||
Line 144: | Line 144: | ||
[-1.95059594, -0.676741205, 0.23324706, 0.746070945, 1.73131507] |
[-1.95059594, -0.676741205, 0.23324706, 0.746070945, 1.73131507] |
||
</pre> |
</pre> |
||
=={{header|Julia}}== |
|||
{{works with|Julia|0.6}} |
|||
<lang julia>function mediansorted(x::AbstractVector, i::Integer, l::Integer) |
|||
len = l - i + 1 |
|||
len > 0 || throw(ArgumentError("Array slice cannot be empty.")) |
|||
mid = i + len ÷ 2 |
|||
return isodd(len) ? x[mid] : (x[mid-1] + x[mid]) / 2 |
|||
end |
|||
function fivenum(x::AbstractVector{T}) where T |
|||
r = Vector{T}(5) |
|||
xs = sort(x) |
|||
r[1] = xs[1] |
|||
r[end] = xs[end] |
|||
r[3] = mediansorted(x, 1, endof(x)) |
|||
mid = length(x) ÷ 2 |
|||
lowerend = isodd(length(x)) ? mid : mid - 1 |
|||
r[2] = mediansorted(x, 1, lowerend) |
|||
r[4] = mediansorted(x, mid, endof(x)) |
|||
return r |
|||
end |
|||
for v in ([15.0, 6.0, 42.0, 41.0, 7.0, 36.0, 49.0, 40.0, 39.0, 47.0, 43.0], |
|||
[36.0, 40.0, 7.0, 39.0, 41.0, 15.0], |
|||
[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]) |
|||
println("# ", v, "\n -> ", fivenum(v)) |
|||
end</lang> |
|||
{{out}} |
|||
<pre># [15.0, 6.0, 42.0, 41.0, 7.0, 36.0, 49.0, 40.0, 39.0, 47.0, 43.0] |
|||
-> [6.0, 42.0, 36.0, 40.0, 49.0] |
|||
# [36.0, 40.0, 7.0, 39.0, 41.0, 15.0] |
|||
-> [7.0, 38.0, 23.0, 40.0, 41.0] |
|||
# [0.140828, 0.0974879, 1.73132, 0.87636, -1.9506, 0.734386, -0.0303573, 1.46676, -0.746213, -0.725888, 0.639052, 0.615015, -0.989838, -1.00448, -0.627595,0.662062, 1.04312, -0.103054, 0.757756, 0.325666] |
|||
-> [-1.9506, -1.9506, -0.0434181, -0.627595, 1.73132]</pre> |
|||
=={{header|Kotlin}}== |
=={{header|Kotlin}}== |