RosettaCodeData/Task/Pascals-triangle/Common-Lisp/pascals-triangle-3.lisp
2017-09-25 22:28:19 +02:00

11 lines
424 B
Common Lisp

(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)))