Bell numbers: Difference between revisions

Content deleted Content added
Petelomax (talk | contribs)
Robbie (talk | contribs)
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}}==