This task is a variation of the short story by Arthur C. Clarke.

(Solvers should be aware of the consequences of completing this task.)

In detail, to specify what is meant by a   “name”:

The integer 1 has 1 name     “1”.
The integer 2 has 2 names   “1+1”,   and   “2”.
The integer 3 has 3 names   “1+1+1”,   “2+1”,   and   “3”.
The integer 4 has 5 names   “1+1+1+1”,   “2+1+1”,   “2+2”,   “3+1”,   “4”.
The integer 5 has 7 names   “1+1+1+1+1”,   “2+1+1+1”,   “2+2+1”,   “3+1+1”,   “3+2”,   “4+1”,   “5”.


Task
Display the first 25 rows of a number triangle which begins:

                                      1
                                    1   1
                                  1   1   1 
                                1   2   1   1
                              1   2   2   1   1
                            1   3   3   2   1   1

Where row   



n


{\displaystyle n}

   corresponds to integer   



n


{\displaystyle n}

,   and each column   



C


{\displaystyle C}

   in row   



m


{\displaystyle m}

   from left to right corresponds to the number of names beginning with   



C


{\displaystyle C}

.

A function   



G
(
n
)


{\displaystyle G(n)}

   should return the sum of the   



n


{\displaystyle n}

-th   row.

Demonstrate this function by displaying:   



G
(
23
)


{\displaystyle G(23)}

,   



G
(
123
)


{\displaystyle G(123)}

,   



G
(
1234
)


{\displaystyle G(1234)}

,   and   



G
(
12345
)


{\displaystyle G(12345)}

.

Optionally note that the sum of the   



n


{\displaystyle n}

-th   row   



P
(
n
)


{\displaystyle P(n)}

   is the     integer partition function.

Demonstrate this is equivalent to   



G
(
n
)


{\displaystyle G(n)}

   by displaying:   



P
(
23
)


{\displaystyle P(23)}

,   



P
(
123
)


{\displaystyle P(123)}

,   



P
(
1234
)


{\displaystyle P(1234)}

,   and   



P
(
12345
)


{\displaystyle P(12345)}

.



Extra credit
If your environment is able, plot   



P
(
n
)


{\displaystyle P(n)}

   against   



n


{\displaystyle n}

   for   



n
=
1
…
999


{\displaystyle n=1\ldots 999}

.

Related tasks
 Partition function P


SetBatchLines -1
 
InputBox, Enter_value, Enter the no. of lines sought
array := []
Loop, % 2*Enter_value - 1
	Loop, % x := A_Index
		y := A_Index, Array[x, y] := 1
 
x := 3
 
Loop
{
	base_r := x - 1
	, x++
	, y := 2
	, index := x
	, new := 1
 
	Loop, % base_r - 1
	{
		array[x, new+1] := array[x-1, new] + array[base_r, y]
		, x++
		, new ++
		, y++
	}
	x := index
	If ( mod(x,2) = 0 )
	{
		to_run := floor(x - x/2)
		, y2 := to_run + 1
	}
	Else
	{
		to_run := x - floor(x/2)
		, y2 := to_run
	}
	Loop, % to_run
	{
		array[x, y2] := array[x-1, y2-1]
		, y2++
		If ( y2 = Enter_value + 1 ) && ( x = Enter_value ) 
		{
			Loop, % Enter_value
			{
				Loop, % x11 := A_Index
				{
					y11 := A_Index
					, string2 .= " " array[x11, y11]
				}
				string2 .= "`n"
			}
			MsgBox % string2
			ExitApp
		}
	}
}
 
~Esc::ExitApp