Floyd's_triangle.md 880 B

Floyd's triangle

constant @floyd = (1..*).rotor(1..*);

Alternatively, using gather/take:

constant @floyd = gather for 1..* -> $s { take [++$ xx $s] }
 
# Printing:
 
sub say-floyd($n) {
    my @formats = @floyd[$n-1].map: {"%{.chars}s"}
 
    for @floyd[^$n] -> @i {
        say ~(@i Z @formats).map: -> ($i, $f) { $i.fmt($f) }
    }
}
 
say-floyd 5;
say-floyd 14;

Output:

 1 
 2  3 
 4  5  6 
 7  8  9 10 
11 12 13 14 15 
 1 
 2  3 
 4  5  6 
 7  8  9 10 
11 12 13 14 15 
16 17 18 19 20 21 
22 23 24 25 26 27 28 
29 30 31 32 33 34 35 36 
37 38 39 40 41 42 43 44  45 
46 47 48 49 50 51 52 53  54  55 
56 57 58 59 60 61 62 63  64  65  66 
67 68 69 70 71 72 73 74  75  76  77  78 
79 80 81 82 83 84 85 86  87  88  89  90  91 
92 93 94 95 96 97 98 99 100 101 102 103 104 105