12345678910111213141516171819202122232425262728293031 |
- #!/usr/bin/ruby
- #
- ## https://rosettacode.org/wiki/Stem-and-leaf_plot
- #
- var data = %i(
- 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
- ).sort;
- var stem_unit = 10;
- var h = data.group_by { |i| i / stem_unit -> int }
- var rng = RangeNum(h.keys.map{.to_i}.minmax);
- var stem_format = "%#{rng.min.len.max(rng.max.len)}d";
- rng.each { |stem|
- var leafs = (h{stem} \\ [])
- say(stem_format % stem, ' | ', leafs.map { _ % stem_unit }.join(' '))
- }
|