2016年3月5日土曜日

160305(2)

Ruby


Ordered Bell number(1)

オンライン整数列大辞典の
A000670(http://oeis.org/A000670/list)
と比較し、答え合わせしてみる。

def A000670(n)
  return [1] if n == 0
  a = [1, 1]
  b = [1, 0]
  (2..n).each{|i|
    b = [1] + b
    s = 0
    (0..i - 1).each{|j|
      c = b[j] += b[j + 1]
      s += c * a[i - 1 - j]
    }
    a << s
  }
  a
end
ary = A000670(20)

# OEIS A000670のデータ
ary0 =
[1,1,3,13,75,541,4683,47293,545835,7087261,
 102247563,1622632573,28091567595,526858348381,
 10641342970443,230283190977853,5315654681981355,
 130370767029135901,3385534663256845323,
 92801587319328411133,2677687796244384203115]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。