Knuth's algorithm S: Difference between revisions
Content added Content deleted
(Realize in F#) |
|||
Line 651: | Line 651: | ||
7 => 29896, 8 => 30188, 9 => 29898, 10 => 29998}</pre> |
7 => 29896, 8 => 30188, 9 => 29898, 10 => 29998}</pre> |
||
=={{header|F_Sharp|F#}}== |
|||
<lang fsharp> |
|||
let N=System.Random 23 //Nigel Galloway: August 7th., 2018 |
|||
let s_of_n_creator i = fun g->Seq.fold(fun (n:_[]) g->if N.Next()%(g+1)>i-1 then n else n.[N.Next()%i]<-g;n) (Array.ofSeq (Seq.take i g)) (Seq.skip i g) |
|||
let s_of_n<'n> = s_of_n_creator 3 |
|||
printfn "using an input array -> %A" (List.init 100000 (fun _->s_of_n [|0..9|]) |> Array.concat |> Array.countBy id |> Array.sort) |
|||
printfn "using an input list -> %A" (List.init 100000 (fun _->s_of_n [0..9]) |> Array.concat |> Array.countBy id |> Array.sort) |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
using an input array -> [|(0, 30162); (1, 30151); (2, 29894); (3, 29766); (4, 30117); (5, 29976); (6, 29916); (7, 29994); (8, 29890); (9, 30134)|] |
|||
using an input list -> [|(0, 29936); (1, 29973); (2, 29880); (3, 30160); (4, 30126); (5, 30123); (6, 30062); (7, 30053); (8, 29892); (9, 29795)|] |
|||
</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |
||
<lang go>package main |
<lang go>package main |