A triangular number is a count of objects arranged into an equilateral triangle. Much like how a square number is a count of objects arranged into a square.

Triangular numbers is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

The nth triangular number is the sum of the first n non-negative integers.

Triangular numbers may be calculated by the following explicit formulas:

where is the binomial coefficient "n plus one choose two".


Analogous to square roots, we may also calculate a triangular root. Numbers that have an integer triangular root are triangular numbers.

The real triangular root of a number may be found using:


Similar to how cubic numbers are square numbers extended into a third dimension, triangular numbers extended into a third dimension are known as tetrahedral numbers.

The nth tetrahedral number is the sum of the first n triangular numbers.

Or, may be calculated directly: (Binomial "n plus two choose three".)

One may find the real tetrahedral root using the formula:
Depending on the math precision of your particular language, may need to be rounded to the nearest 1e-16 or so.


Extending into a fourth dimension we get pentatopic numbers.

Again, the nth pentatope is the sum of the first n tetrahedral numbers, or (Binomial "n plus three choose four".)

Pentatopic real roots may be found using:


In general, these all belong to the class figurate numbers as they are based on r dimensional figures. Sometimes they are referred to as r-simplex numbers. In geometry a simplex is the simplest r-dimensional object possible.

You may easily extend to an arbitrary dimension r using binomials. Each term n in dimension r is

There is no known general formula to find roots of higher r-simplex numbers.


Task
  • Find and display the first 30 triangular numbers (r = 2).
  • Find and display the first 30 tetrahedral numbers (r = 3).
  • Find and display the first 30 pentatopic numbers (r = 4).
  • Find and display the first 30 12-simplex numbers (r = 12).
  • Find and display the triangular root, the tetrahedral root, and the pentatopic root for the integers:
    • 21408696
    • 26728085384
    • 14545501785001


See also


Raku

use Math::Root;

sub binomial { [×] ($^n0) Z/ 1 .. $^p }

sub polytopic (Int $r, @range) { @range.map: { binomial $_ + $r - 1, $r } }

sub triangular-root ($x) { ((8 × $x + 1).&root - 1) / 2 }

sub tetrahedral-root ($x) {
    ((3 × $x + (9 × $x² - 1/27).&root).&root(3) +
     (3 × $x - (9 × $x² - 1/27).&root).&root(3) - 1).round(1e-20)
}

sub pentatopic-root ($x) { ((5 + 4 × (24 × $x + 1).&root).&root - 3) / 2 }

sub display (@values) {
    my $c = @values.max.chars;
    @values.batch(6)».fmt("%{$c}d").join: "\n";
}

for 2, 'triangular', 3, 'tetrahedral',  4, 'pentatopic', 12, '12-simplex'
  -> $r, $name {
    say "\nFirst 30 $name numbers:\n" ~
    display polytopic( $r, ^Inf )[^30]
}

say '';

for 21408696, 26728085384, 14545501785001 {
  say qq:to/R/;
  Roots of $_:
    triangular-root: {.&triangular-root}
   tetrahedral-root: {.&tetrahedral-root}
    pentatopic-root: {.&pentatopic-root}
  R
}
Output:
First 30 triangular numbers:
  0   1   3   6  10  15
 21  28  36  45  55  66
 78  91 105 120 136 153
171 190 210 231 253 276
300 325 351 378 406 435

First 30 tetrahedral numbers:
   0    1    4   10   20   35
  56   84  120  165  220  286
 364  455  560  680  816  969
1140 1330 1540 1771 2024 2300
2600 2925 3276 3654 4060 4495

First 30 pentatopic numbers:
    0     1     5    15    35    70
  126   210   330   495   715  1001
 1365  1820  2380  3060  3876  4845
 5985  7315  8855 10626 12650 14950
17550 20475 23751 27405 31465 35960

First 30 12-simplex numbers:
         0          1         13         91        455       1820
      6188      18564      50388     125970     293930     646646
   1352078    2704156    5200300    9657700   17383860   30421755
  51895935   86493225  141120525  225792840  354817320  548354040
 834451800 1251677700 1852482996 2707475148 3910797436 5586853480

Roots of 21408696:
  triangular-root: 6543
 tetrahedral-root: 503.5618269746366
  pentatopic-root: 149.06094737526586748438757488471337

Roots of 26728085384:
  triangular-root: 231205.405565255836957291031960694122305
 tetrahedral-root: 5432
  pentatopic-root: 893.44245675168486988846621152924537

Roots of 14545501785001:
  triangular-root: 5393607.15814517231649730472465548460797
 tetrahedral-root: 44355.777384073255
  pentatopic-root: 4321