RosettaCodeData/Task/Bell-numbers/ALGOL-M/bell-numbers.alg
2023-07-01 13:44:08 -04:00

36 lines
838 B
Text

begin
integer function index(row, col);
integer row, col;
index := row * (row-1)/ 2 + col;
integer ROWS; ROWS := 15;
begin
decimal(11) array bell[0:ROWS*(ROWS+1)/2];
integer i, j;
bell[index(1, 0)] := 1.;
for i := 2 step 1 until ROWS do
begin
bell[index(i, 0)] := bell[index(i-1, i-2)];
for j := 1 step 1 until i-1 do
bell[index(i,j)] := bell[index(i,j-1)] + bell[index(i-1,j-1)];
end;
write("First fifteen Bell numbers:");
for i := 1 step 1 until ROWS do
begin
write(i);
writeon(": ");
writeon(bell[index(i,0)]);
end;
write("");
write("First ten rows of Bell's triangle:");
for i := 1 step 1 until 10 do
begin
write("");
for j := 0 step 1 until i-1 do
writeon(bell[index(i,j)]);
end;
end;
end