Floyd's triangle   lists the natural numbers in a right triangle aligned to the left where

 the first row is   1     (unity)
 successive rows start towards the left with the next number followed by successive naturals listing one more number than the line above.


The first few lines of a Floyd triangle looks like this:

 1
 2  3
 4  5  6
 7  8  9 10
11 12 13 14 15



Task

 Write a program to generate and display here the first   n   lines of a Floyd triangle. 
(Use   n=5   and   n=14   rows).
 Ensure that when displayed in a mono-space font, the numbers line up in vertical columns as shown and that only one space separates numbers of the last row.


fcn lcNum(row){(row*(row+1)/2+1)}   // lazy caterer's sequence
fcn floydsTriangle(rows){
   fmt:=[lcNum(rows-1)..lcNum(rows)-1].pump(String,fcn(n){
      String("%",n.toString().len(),"d ")}); // eg "%2d %2d %3d %3d"
   foreach row in (rows){
     ns:=[lcNum(row)..lcNum(row+1)-1].walk(); // eg L(4.5,6)
     fmt[0,ns.len()*4].fmt(ns.xplode()).println(); // eg "%2d %2d %2d ".fmt(4,5,6)
   }
}
floydsTriangle(5); println();
floydsTriangle(14);