28 lines
1.2 KiB
Forth
28 lines
1.2 KiB
Forth
open System
|
|
|
|
let 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 ]
|
|
|
|
let plotStemAndLeafs items =
|
|
let groupedItems = items |> Seq.sort
|
|
|> Seq.map (fun i -> i / 10, i % 10)
|
|
|> Seq.groupBy fst
|
|
|
|
let maxStem = groupedItems |> Seq.maxBy fst |> fst
|
|
let stemLeafMap = Map.ofSeq groupedItems
|
|
|
|
[0..maxStem] |> List.iter (fun stm -> printf " %2d | " stm
|
|
match stemLeafMap.TryFind stm with
|
|
| None -> ()
|
|
| Some items -> items |> Seq.iter (snd >> printf "%d ")
|
|
printfn "")
|
|
|
|
plotStemAndLeafs data
|