blob: da24b5e71fecc7b80209ff125b0b6805dd5f1604 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
; SYNOPSIS:
; # clisp gcd.lisp 11 22 33 121
; # ecl --shell gcd.lisp 121 22 33
; # gcl -f gcd.lisp 121 22 33
; # sbcl --script gcd.lisp 121 22 33
(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)))
(defun program-args ()
(or
#+CLISP *args*
#+ECL (ext:command-args)
#+GCL si::*command-args*
#+SBCL *posix-argv*
nil))
(defun numbers ()
(remove nil
(map 'list (lambda (x) (parse-integer x :junk-allowed t))
(program-args))))
(write (apply #'gcdn (numbers)))
(fresh-line)
|