home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume10 / ifp / part01 / fproot / demo / PasTri < prev    next >
Encoding:
Text File  |  1987-07-05  |  931 b   |  35 lines

  1. (*
  2.  * Pascal's triangle generator
  3.  *
  4.  * n : PasTri -> first n rows of Pascal's triangle
  5.  *
  6.  * Example
  7.  *              5 : PasTri -> <
  8.  *                               <1>
  9.  *                               <1 1>
  10.  *                               <1 2 1>
  11.  *                               <1 3 3 1>
  12.  *                               <1 4 6 4 1>
  13.  *                            >
  14.  *)
  15.  
  16. DEF PasTri AS          
  17.    IF [id,#0] | <= THEN #<<1>>
  18.    ELSE
  19.       sub1 | PasTri |                (* Create triangle with n-1 rows *)
  20.       [
  21.          id,  
  22.  
  23.          1r |                        (* Take last row of smaller triangle *)
  24.          [
  25.             [#0,id] | apndl,         (* Append 0 to left edge of row  *)
  26.             [id,#0] | apndr          (* Append 0 to right edge of row *)
  27.          ] | trans | EACH + END      (* Add corresponding elements *)
  28.  
  29.       ] | apndr                      (* Append new row to smaller triangle *)
  30.    END;
  31.  
  32.  
  33.  
  34.  
  35.