2015年11月3日火曜日

151103(2)

Ruby


Kolakoski sequence(1)

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

def A000002(n)
  ary = [1, 2]
  b_ary = [2]
  # 次の文字
  str = 1
  ary += b_ary
  while ary.size < n
    f_ary, b_ary = b_ary, []
    (0..f_ary.size - 1).each{|i|
      b_ary += [str] * f_ary[i]
      # 次の文字
      str = 1 + str % 2
    }
    ary += b_ary
  end
  ary[0..n - 1]
end
ary = A000002(108)

# OEIS A000002のデータ
ary0 =
[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,
 1,2,2,1,1,2,1,1,2,1,2,2,1,2,2,1,1,2,1,2,2,1,2,1,1,
 2,1,1,2,2,1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,1,2,
 2,1,2,1,1,2,2,1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,
 2,1,2,1,1,2,1,2,2]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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