10 lines
338 B
Text
10 lines
338 B
Text
fcn derangements(n){ //-->Walker
|
|
enum:=[0..n-1].pump(List);
|
|
Utils.Helpers.permuteW(enum).tweak('wrap(perm){
|
|
if(perm.zipWith('==,enum).sum(0)) Void.Skip
|
|
else perm
|
|
});
|
|
}
|
|
fcn derangers(n){ // just count # of derangements, w/o saving them
|
|
derangements(n).reduce('+.fpM("10-",1),0); // ignore perm --> '+(1,sum)...
|
|
}
|