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.


$ include "seed7_05.s7i";
 
const proc: writeFloyd (in integer: rows) is func
  local
    var integer: number is 1;
    var integer: numBeforeLastLine is 0;
    var integer: line is 0;
    var integer: column is 0;
  begin
    numBeforeLastLine := rows * pred(rows) div 2;
    for line range 1 to rows do
      for column range 1 to line do
        if column <> 1 then
          write(" ");
        end if;
        write(number lpad length(str(numBeforeLastLine + column)));
        incr(number);
      end for;
      writeln;
    end for;
  end func;
 
const proc: main is func
  begin
    writeFloyd(5);
    writeFloyd(14);
  end func;