31 lines
827 B
Text
31 lines
827 B
Text
program bell_numbers;
|
|
print("First 15 and 50th Bell numbers:");
|
|
b := bell_nums(50);
|
|
loop for i in [1..15] with 50 do
|
|
print(lpad(str i, 2) + ": " + str b(i));
|
|
end loop;
|
|
|
|
print;
|
|
print("First 10 rows of the Bell triangle:");
|
|
loop for row in bell_triangle(10) do
|
|
print(+/[lpad(str n, 7) : n in row]);
|
|
end loop;
|
|
|
|
proc bell_nums(n);
|
|
tri := bell_triangle(n);
|
|
return [row(#row) : row in tri];
|
|
end proc;
|
|
|
|
proc bell_triangle(rows);
|
|
tri := [[1]];
|
|
loop for i in [2..rows] do
|
|
row := tri(#tri);
|
|
nextrow := [row(#row)];
|
|
loop for n in row do
|
|
nextrow with:= nextrow(#nextrow) + n;
|
|
end loop;
|
|
tri with:= nextrow;
|
|
end loop;
|
|
return tri;
|
|
end proc;
|
|
end program;
|