RosettaCodeData/Task/Stem-and-leaf-plot/Crystal/stem-and-leaf-plot.cr
2025-02-27 18:35:13 -05:00

20 lines
871 B
Crystal

data = [12, 127, 28, 42, 39, 113, 42, 18, 44, 118, 44, 37, 113, 124,
37, 48, 127, 36, 29, 31, 125, 139, 131, 115, 105, 132, 104,
123, 35, 113, 122, 42, 117, 119, 58, 109, 23, 105, 63, 27, 44,
105, 99, 41, 128, 121, 116, 125, 32, 61, 37, 127, 29, 113,
121, 58, 114, 126, 53, 114, 96, 25, 109, 7, 31, 141, 46, 13,
27, 43, 117, 116, 27, 7, 68, 40, 31, 115, 124, 42, 128, 52,
71, 118, 117, 38, 27, 106, 33, 117, 116, 111, 40, 119, 47,
105, 57, 122, 109, 124, 115, 43, 120, 43, 27, 27, 18, 28, 48,
125, 107, 114, 34, 133, 45, 120, 30, 127, 31, 116, 146]
hist = Hash(Int32, Array(Int32)).new
data.each do |n|
stem = n // 10
hist[stem] = (hist[stem]? || [] of Int32) << n % 10
end
Range.new(*hist.keys.minmax).each do |stem|
printf "%4d|%s\n", stem, (hist[stem]? || [] of Int32).sort.map(&.to_s).join
end