Name:
Anonymous
2009-11-04 1:17
Come up with variations of your favorite toy problems. The more obfuscated the better.
I'll start with a simple one:
def factorial(n): return reduce(lambda x,y: x*y, range(1,n
+1)) if n > 1 else 1
Name:
Anonymous
2009-11-04 1:40
(PROGN
(EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN 'FACTORIAL 'NIL T))
(EVAL-WHEN (:LOAD-TOPLEVEL :EXECUTE)
(SB-IMPL::%DEFUN 'FACTORIAL
(SB-INT:NAMED-LAMBDA FACTORIAL (N)
(BLOCK FACTORIAL
(REDUCE #'*
(BLOCK NIL
(LET ((I 1)
(#:LOOP-LIMIT-945 N))
(DECLARE
(TYPE (AND NUMBER REAL)
#:LOOP-LIMIT-945)
(TYPE (AND REAL NUMBER)
I))
(LET* ((#:LOOP-LIST-HEAD-946
(LIST NIL))
(#:LOOP-LIST-TAIL-947
#:LOOP-LIST-HEAD-946))
(TAGBODY
SB-LOOP::NEXT-LOOP
(IF
(> I
#:LOOP-LIMIT-945)
(PROGN
(GO
SB-LOOP::END-LOOP))
NIL)
(RPLACD
#:LOOP-LIST-TAIL-947
(SETQ #:LOOP-LIST-TAIL-947
(LIST I)))
(SETQ I (1+ I))
(GO
SB-LOOP::NEXT-LOOP)
SB-LOOP::END-LOOP
(RETURN-FROM NIL
(CDR
#:LOOP-LIST-HEAD-946))))))
:INITIAL-VALUE 1)))
NIL 'NIL (SB-C:SOURCE-LOCATION))))
Just kidding, here's the original:
(defun factorial (n)
(reduce #'* (loop for i from 1 to n collect i) :initial-value 1))