26 lines
713 B
Plaintext
26 lines
713 B
Plaintext
function stemleaf{T<:Real}(a::Array{T,1}, leafsize=1)
|
|
ls = 10^int(log10(leafsize))
|
|
(stem, leaf) = divrem(sort(int(a/ls)), 10)
|
|
leaf[sign(stem) .== -1] *= -1
|
|
negzero = leaf .< 0
|
|
if any(negzero)
|
|
leaf[negzero] *= -1
|
|
nz = @sprintf "%10s | " "-0"
|
|
nz *= join(map(string, leaf[negzero]), " ")
|
|
nz *= "\n"
|
|
stem = stem[!negzero]
|
|
leaf = leaf[!negzero]
|
|
else
|
|
nz = ""
|
|
end
|
|
slp = ""
|
|
for i in stem[1]:stem[end]
|
|
i != 0 || (slp *= nz)
|
|
slp *= @sprintf "%10d | " i
|
|
slp *= join(map(string, leaf[stem .== i]), " ")
|
|
slp *= "\n"
|
|
end
|
|
slp *= " Leaf Unit = " * string(convert(T, ls)) * "\n"
|
|
return slp
|
|
end
|