RosettaCodeData/Task/Pascals-triangle/Common-Lisp/pascals-triangle-3.lisp

12 lines
424 B
Common Lisp
Raw Permalink Normal View History

2017-09-23 10:01:46 +02:00
(defun next-pascal (l)
`(1 ,@(loop for i from 0 to (- (length l) 2)
collect (+ (nth i l) (nth (1+ i) l)))
1))
(defun pascal-print (r)
(let* ((pasc (loop with p = (list (list 1))
repeat r do (nconc p (list (apply #'next-pascal (last p))))
finally (return p)))
(len (length (format nil "~A" (car (last pasc))))))
(format t (format nil "~~{~~~D:@<~~{~~A ~~}~~>~~%~~}" len) pasc)))