RosettaCodeData/Task/Bell-numbers/SETL/bell-numbers.setl
2025-02-27 18:35:13 -05:00

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;