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.


 
#lang racket
(require math)
 
(define (tri n)
  (if (zero? n) 0 (triangle-number n)))
 
(define (floyd n)
  (define (width x) (string-length (~a x)))
  (define (~n x c) (~a x 
                       #:width (width (+ (tri (- n 1)) 1 c))
                       #:align 'right #:left-pad-string " "))
  (for ([r n])
    (for ([c (+ r 1)]) 
      (display (~a (~n (+ (tri r) 1 c) c) " ")))
    (newline)))
 
(floyd 5)
(floyd 14)
 