UNPKG

algebrite

Version:

Computer Algebra System in Coffeescript

77 lines (54 loc) 1.12 kB
### choose ===================================================================== Tags ---- scripting, JS, internal, treenode, general concept Parameters ---------- n,k General description ------------------- Returns the number of combinations of n items taken k at a time. For example, the number of five card hands is choose(52,5) ``` n! choose(n,k) = ------------- k! (n - k)! ``` ### Eval_choose = -> push(cadr(p1)) Eval() push(caddr(p1)) Eval() choose() # Result vanishes for k < 0 or k > n. (A=B, p. 19) #define N p1 #define K p2 choose = -> save() p2 = pop() p1 = pop() if (choose_check_args() == 0) push_integer(0) restore() return push(p1) factorial() push(p2) factorial() divide() push(p1) push(p2) subtract() factorial() divide() restore() choose_check_args = -> if (isNumericAtom(p1) && lessp(p1, zero)) return 0 else if (isNumericAtom(p2) && lessp(p2, zero)) return 0 else if (isNumericAtom(p1) && isNumericAtom(p2) && lessp(p1, p2)) return 0 else return 1