Bell number(1)
オンライン整数列大辞典の
A000110(http://oeis.org/A000110/list)
と比較し、答え合わせしてみる。
(余談になるが、ベル数を求めていると、
「争いのない状態」というものが奇跡に近い
ことのように思えてきた。)
def bell(n)
return 1 if n == 0
i = 1
bell = [1]
while i < n
next_bell = [bell[-1]]
# Bell triangle
i.times{|j| next_bell[j + 1] = next_bell[j] + bell[j]}
bell = next_bell
i += 1
end
bell[-1]
end
def A000110(n)
(0..n).map{|i| bell(i)}
end
ary = A000110(26)
# OEIS A000110のデータ
ary0 =
[1,1,2,5,15,52,203,877,4140,21147,115975,678570,
4213597,27644437,190899322,1382958545,10480142147,
82864869804,682076806159,5832742205057,
51724158235372,474869816156751,4506715738447323,
44152005855084346,445958869294805289,
4638590332229999353,49631246523618756274]
# 一致の確認
p ary == ary0
return 1 if n == 0
i = 1
bell = [1]
while i < n
next_bell = [bell[-1]]
# Bell triangle
i.times{|j| next_bell[j + 1] = next_bell[j] + bell[j]}
bell = next_bell
i += 1
end
bell[-1]
end
def A000110(n)
(0..n).map{|i| bell(i)}
end
ary = A000110(26)
# OEIS A000110のデータ
ary0 =
[1,1,2,5,15,52,203,877,4140,21147,115975,678570,
4213597,27644437,190899322,1382958545,10480142147,
82864869804,682076806159,5832742205057,
51724158235372,474869816156751,4506715738447323,
44152005855084346,445958869294805289,
4638590332229999353,49631246523618756274]
# 一致の確認
p ary == ary0
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。