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}}==