#!/usr/bin/newlisp # # Pascal's triangle: # http://en.wikipedia.org/wiki/Pascal's_triangle # # Nov 6, 2005 - PvE. # Revised for newLisp 10 at december 28, 2008 - PvE. #--------------------------------------------------------------- # Calculate faculty of number using recursion (define (fac n) (if (> n 1) (mul n (fac (- n 1))) n)) # Intro (println "\nThis program shows Pascal's Triangle.") (println "\nIf the results do not fit on your screen, redirect") (println "to a file, for example: newlisp pascal.lsp > results.txt") (print "\nHow many lines of the triangle must be calculated? ") (set 'lines (int (read-line))) (println) # Define some constants (constant 'reslen (sqrt lines)) (constant 'tabspace (* 2 reslen)) # Main routine (for (row 0 lines) # Goto starting print position (dotimes (x (- lines row)) (print (dup " " reslen))) # Calculate values and print (for (position 0 row) (set 'quotient (mul (fac position) (fac (- row position)) ) ) (if (= quotient 0) (set 'result 1) (set 'result (div (fac row) quotient) ) ) (print result (dup " " (- tabspace (length (string result))) )) ) # Next line (print "\n") ) # Exit newLisp (exit)