2016年3月6日日曜日

160306(2)

Ruby


Ordered Bell number(4)

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

def A142071(n)
  a = [0, 1]
  b = [0, 1]
  i = 2
  while a.size < n
    b << 0
    i.downto(1){|j|
      # b[j]をb[j - 1] * (j - 1) + b[j] * jにする
      b[j] += (b[j - 1] + b[j]) * (j - 1)
    }
    a += b
    i += 1
  end
  a[0..n - 1]
end
ary = A142071(58)

# OEIS A142071のデータ
ary0 =
[0,1,0,1,1,0,1,3,2,0,1,7,12,6,0,1,15,50,60,24,0,1,
 31,180,390,360,120,0,1,63,602,2100,3360,2520,720,
 0,1,127,1932,10206,25200,31920,20160,5040,0,1,255,
 6050,46620,166824,317520,332640,181440,40320,0,1,
 511,18660]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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