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.


floyd := proc(rows)
	local num, numRows, numInRow, i, digits;
	digits := Array([]);
	for i to 2 do
		num := 1;
		numRows := 1;
		numInRow := 1;
		while numRows <= rows do
			if i = 2 then
				printf(cat("%", digits[numInRow], "a "), num);
			end if;
			num := num + 1;
			if i = 1 and numRows = rows then
				digits(numInRow) := StringTools[Length](convert(num-1, string));
			end if;
			if numInRow >= numRows then
				if i = 2 then
					printf("\n");
				end if;
				numInRow := 1;
				numRows := numRows + 1;
			else
				numInRow := numInRow +1;
			end if;
		end do;
	end do;
	return NULL;
end proc:
 
floyd(5);
floyd(14);