Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,10 @@
|
|||
// Generate derangements. Nigel Galloway: July 9th., 2019
|
||||
let derange n=
|
||||
let fG n i g=let e=Array.copy n in e.[i]<-n.[g]; e.[g]<-n.[i]; e
|
||||
let rec derange n g α=seq{
|
||||
match (α>0,n&&&(1<<<α)=0) with
|
||||
(true,true)->for i in [0..α-1] do if n&&&(1<<<i)=0 then let g=(fG g α i) in yield! derange (n+(1<<<i)) g (α-1); yield! derange n g (α-1)
|
||||
|(true,false)->yield! derange n g (α-1)
|
||||
|(false,false)->yield g
|
||||
|_->()}
|
||||
derange 0 [|1..n|] (n-1)
|
||||
|
|
@ -0,0 +1 @@
|
|||
derange 4 |> Seq.iter(printfn "%A")
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
let subFact n=let rec fN n g=match n with 0m->int64(round(g/2.7182818284590452353602874713526624978m))|_->fN (n-1m) (g*n) in if n=0 then 1L else fN (decimal n) 1m
|
||||
[1..9] |> Seq.iter(fun n->printfn "items=%d !n=%d derangements=%d" n (subFact n) (derange n|>Seq.length))
|
||||
Loading…
Add table
Add a link
Reference in a new issue