Bell numbers: Difference between revisions
Content deleted Content added
→{{header|Perl 6}}: Added second Perl 6 solution (Recurrence relation on binomial coefficients) |
Added Sidef |
||
Line 268: | Line 268: | ||
Bell(49) = 10726137154573358400342215518590002633917247281 |
Bell(49) = 10726137154573358400342215518590002633917247281 |
||
</pre> |
</pre> |
||
=={{header|Sidef}}== |
|||
Built-in: |
|||
<lang ruby>say 15.of { .bell }</lang> |
|||
Formula as a sum of Stirling numbers of the second kind: |
|||
<lang ruby>func bell(n) { sum(0..n, {|k| stirling2(n, k) }) }</lang> |
|||
Via Aitken's array (optimized for space): |
|||
<lang ruby>func bell_numbers (n) { |
|||
var acc = [] |
|||
var bell = [1] |
|||
for k in (1..n) { |
|||
acc.unshift(bell[-1]) |
|||
acc.accumulate! |
|||
bell.push(acc[-1]) |
|||
} |
|||
bell |
|||
} |
|||
var B = bell_numbers(50) |
|||
say "The first 15 Bell numbers: #{B.first(15).join(', ')}" |
|||
say "The fiftieth Bell number : #{B[50-1]}"</lang> |
|||
{{out}} |
|||
<pre> |
|||
The first 15 Bell numbers: 1, 1, 2, 5, 15, 52, 203, 877, 4140, 21147, 115975, 678570, 4213597, 27644437, 190899322 |
|||
The fiftieth Bell number : 10726137154573358400342215518590002633917247281 |
|||
</pre> |
|||
Aitken's array: |
|||
<lang ruby>func aitken_array (n) { |
|||
var A = [1] |
|||
[[1]] + (n-1).of { |
|||
A = [A[-1], A...].accumulate |
|||
} |
|||
} |
|||
aitken_array(10).each { .say }</lang> |
|||
{{out}} |
|||
<pre> |
|||
[1] |
|||
[1, 2] |
|||
[2, 3, 5] |
|||
[5, 7, 10, 15] |
|||
[15, 20, 27, 37, 52] |
|||
[52, 67, 87, 114, 151, 203] |
|||
[203, 255, 322, 409, 523, 674, 877] |
|||
[877, 1080, 1335, 1657, 2066, 2589, 3263, 4140] |
|||
[4140, 5017, 6097, 7432, 9089, 11155, 13744, 17007, 21147] |
|||
[21147, 25287, 30304, 36401, 43833, 52922, 64077, 77821, 94828, 115975] |
|||
</pre> |
|||
Aitken's array (recursive definition): |
|||
<lang ruby>func A((0), (0)) { 1 } |
|||
func A(n, (0)) { A(n-1, n-1) } |
|||
func A(n, k) is cached { A(n, k-1) + A(n-1, k-1) } |
|||
for n in (0..9) { |
|||
say (0..n -> map{|k| A(n, k) }) |
|||
}</lang> |
|||
(same output as above) |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |