``````
{A tetrahedron (triangular pyramid) has
1,3,6,10, etc in successive layers.  A two layer
tetrahedron has 4 marbles, a perfect square.  What is
the next larger with a total that is a perfect square?}
.
{generated code snipped here}.``````
``.``
``````.
procedure TForm1.SolveBtnClick(Sender: TObject);
{User clicked solve button}
{pretty much self commenting - isn't Delphi great?}
const maxmarbles=1000;
var {the 4 variables}
PyramidNbr  :integer; {also nbr of marbles on a side} ``````
``  layer  :integer; {nbr of marbles in layer}``
``  total  :integer; {total in pyramid}``
``````  root :integer;  {square root of total}
begin
layer:=0;
total:=0;
PyramidNbr:=0;
repeat
inc(PyramidNbr);
layer:=layer+PyramidNbr;
total:=total+layer;
root:=trunc(sqrt(total));
until ((PyramidNbr>3) and  (root*root=total)) or (PyramidNbr>maxMarbles);

If root*root=total
then  showmessage ('Side '+inttostr(PyramidNbr)
+', Layer '+ inttostr(layer)
+', Total '+inttostr(total)
+', Sqrt(Total) '+inttostr(root))
else Showmessage('No solutions with sides less than '+inttostr(maxmarbles));
end;

end.

``````