From 0d3412d3ef23c30d1212ef92b3cb7c1453236102 Mon Sep 17 00:00:00 2001 From: Igor Date: Wed, 26 Jan 2011 00:28:50 +0300 Subject: Common Lisp --- gcd.lisp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 gcd.lisp (limited to 'gcd.lisp') diff --git a/gcd.lisp b/gcd.lisp new file mode 100644 index 0000000..831bb31 --- /dev/null +++ b/gcd.lisp @@ -0,0 +1,24 @@ +(defun gcd2 (a b) + (if (= b 0) + a + (gcd2 b (mod a b)))) + +(defun gcdn (&rest numbers) + (reduce #'gcd2 (rest numbers) + :initial-value (first numbers))) + +; Command line access is different on different Lisps +(defun program-args () + (or + #+SBCL (rest *posix-argv*) + #+CLISP *args* + ;#+ECL (ext:command-args) + ;#+CMU extensions:*command-line-words* + ;#+LISPWORKS system:*line-arguments-list* + nil)) + +(write (apply #'gcdn + (map 'list #'parse-integer (program-args)) + )) +(fresh-line) + -- cgit v1.2.3