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.


import std.stdio, std.conv;
 
void floydTriangle(in uint n) {
    immutable lowerLeftCorner = n * (n - 1) / 2 + 1;
    foreach (r; 0 .. n)
        foreach (c; 0 .. r + 1)
            writef("%*d%c",
                   text(lowerLeftCorner + c).length,
                   r * (r + 1) / 2 + c + 1,
                   c == r ? '\n' : ' ');
}
 
void main() {
    floydTriangle(5);
    floydTriangle(14);
}