/nCr { % n r
2 copy sub 2 copy lt {exch} if % n r maxd mind
1 1 5 3 roll % mind j=1 v=1 n maxd
1 add -1 exch { % for i : n -> maxd+1 step -1
mul % mind j v*i
1 index 3 index le { % j > mind ?
1 index idiv exch 1 add exch % mind j+1 v/j
} if
} for
{ % mind j v
1 index 3 index gt {exit} if % j > mind ?
1 index idiv exch 1 add exch % mind j+1 v/j
} loop
exch pop exch pop % v
} bind def
Sunday, January 11, 2009
n choose r
Just for fun I cooked up a little bit of PostScript to calculate nCr that uses purely stack-based storage - quite efficient.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment