(***** PL/T による  Pascal の三角形 *****)

const  Max = 12   ;                     (* 12段まで求める *)

(**** nCr を求める再帰関数  c : combination(組み合わせ) ****)
function c(n,r) ;
begin
  if (n=r) + (r=0) then return(1)
                   else return(c(n-1,r-1) + c(n-1,r))  (* 数学の公式 *)
end;

(**** メイン処理 ****)
var    n,r,sum,x  ;
begin
  writeln(' n',' ':20,'Pascal''s triangle',' ':19,'sum');
  for n:=0 to Max do
    begin
      sum := 0 ;
      write(n:2,' ':23-2*(n-1)) ;
      for r:=0 to n do
        begin
          x := c(n,r) ;                 (* nCr *)
          write(x:4)  ;
          sum := sum + x
        end;
      writeln(' ':24-2*(n-1),sum:4)     (* sum は　2のn乗になる *)
    end
end.
