Bell numbers: Difference between revisions
Content deleted Content added
Line 448: | Line 448: | ||
185724268771078270438257767181908917499221852770 |
185724268771078270438257767181908917499221852770 |
||
</pre> |
</pre> |
||
=={{header|Kotlin}}== |
|||
{{trans|C}} |
|||
<lang scala>class BellTriangle(n: Int) { |
|||
private val arr: Array<Int> |
|||
init { |
|||
val length = n * (n + 1) / 2 |
|||
arr = Array(length) { 0 } |
|||
set(1, 0, 1) |
|||
for (i in 2..n) { |
|||
set(i, 0, get(i - 1, i - 2)) |
|||
for (j in 1 until i) { |
|||
val value = get(i, j - 1) + get(i - 1, j - 1) |
|||
set(i, j, value) |
|||
} |
|||
} |
|||
} |
|||
private fun index(row: Int, col: Int): Int { |
|||
require(row > 0) |
|||
require(col >= 0) |
|||
require(col < row) |
|||
return row * (row - 1) / 2 + col |
|||
} |
|||
operator fun get(row: Int, col: Int): Int { |
|||
val i = index(row, col) |
|||
return arr[i] |
|||
} |
|||
private operator fun set(row: Int, col: Int, value: Int) { |
|||
val i = index(row, col) |
|||
arr[i] = value |
|||
} |
|||
} |
|||
fun main() { |
|||
val rows = 15 |
|||
val bt = BellTriangle(rows) |
|||
println("First fifteen Bell numbers:") |
|||
for (i in 1..rows) { |
|||
println("%2d: %d".format(i, bt[i, 0])) |
|||
} |
|||
for (i in 1..10) { |
|||
print("${bt[i, 0]}") |
|||
for (j in 1 until i) { |
|||
print(", ${bt[i, j]}") |
|||
} |
|||
println() |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre>First fifteen Bell numbers: |
|||
1: 1 |
|||
2: 1 |
|||
3: 2 |
|||
4: 5 |
|||
5: 15 |
|||
6: 52 |
|||
7: 203 |
|||
8: 877 |
|||
9: 4140 |
|||
10: 21147 |
|||
11: 115975 |
|||
12: 678570 |
|||
13: 4213597 |
|||
14: 27644437 |
|||
15: 190899322 |
|||
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> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |