16 lines
340 B
Factor
16 lines
340 B
Factor
: fact ( n -- n-factorial )
|
|
dup 0 = [ drop 1 ] [ dup 1 - fact * ] if ;
|
|
|
|
: choose ( n k -- n-choose-k )
|
|
2dup - [ fact ] tri@ * / ;
|
|
|
|
! outputs 10
|
|
5 3 choose .
|
|
|
|
! alternative using folds
|
|
USE: math.ranges
|
|
|
|
! (product [n..k+1] / product [n-k..1])
|
|
: choose-fold ( n k -- n-choose-k )
|
|
2dup 1 + [a,b] product -rot - 1 [a,b] product / ;
|