Combinations and permutations: Difference between revisions

Content added Content deleted
(+Stata)
Line 347: Line 347:


<lang Lisp>(defun combinations (n k)
<lang Lisp>(defun combinations (n k)
(cond ((or (< n k) (< k 0) (< n 0)) 0)
(let ((num 1)
(den 1) )
((= k 0) 1)
(dotimes (i k (/ num den))
(t (do* ((i 1 (1+ i))
(m n (1- m))
(setq num (* num (- n i)) den (* den (- k i))) )))
(a m (* a m))

(b i (* b i)))
((= i k) (/ a b))))))


(defun permutations (n k)
(defun permutations (n k)
(let ((p 1))
(cond ((or (< n k) (< k 0) (< n 0)) 0)
(dotimes (i k p)
((= k 0) 1)
(setq p (* p (- n i))) )))
(t (do* ((i 1 (1+ i))
(m n (1- m))
(a m (* a m)))
((= i k) a)))))
</lang>
</lang>