2015年6月7日日曜日

150607(2)

Ruby


Mian-Chowla sequence

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

N = 50
ary = [1]
s_ary = [2]
m = 2
while ary.size < N
  s_ary0 = []
  size = 0
  ary.each{|i|
    j = m + i
    break if s_ary.include?(j)
    s_ary0.push(j)
    size += 1
  }
  if size == ary.size
    j = m + m
    if !s_ary.include?(j)
      s_ary0.push(j)
      # m以下のs_aryの要素は以後使わないので、除いておく
      s_ary = (s_ary + s_ary0).select{|k| k > m}
      ary.push(m)
    end
  end
  m += 1
end

# OEIS A005282のデータ
ary0 =
[1,2,4,8,13,21,31,45,66,81,97,123,148,182,204,252,
 290,361,401,475,565,593,662,775,822,916,970,1016,
 1159,1312,1395,1523,1572,1821,1896,2029,2254,2379,
 2510,2780,2925,3155,3354,3591,3797,3998,4297,4433,
 4779,4851]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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