Riffle Shuffle
オンライン整数列大辞典の
A002326(http://oeis.org/A002326/list)
と比較し、答え合わせしてみる。
def riffle_shuffle(ary)
n = ary.size / 2
(0..n - 1).inject([]){|s, i| s += [ary[i], ary[i + n]]}
end
# 0から2n + 1までのカードをシャッフルして元に戻るまでの回数
def s(n)
ary0 = (0..2 * n + 1).to_a
ary = riffle_shuffle(ary0)
i = 1
while ary != ary0
ary = riffle_shuffle(ary)
i += 1
end
i
end
def A002326(n)
(0..n).map{|i| s(i)}
end
ary = A002326(72)
# OEIS A002326のデータ
ary0 =
[1,2,4,3,6,10,12,4,8,18,6,11,20,18,28,5,10,12,36,
12,20,14,12,23,21,8,52,20,18,58,60,6,12,66,22,35,
9,20,30,39,54,82,8,28,11,12,10,36,48,30,100,51,12,
106,36,36,28,44,12,24,110,20,100,7,14,130,18,36,
68,138,46,60,28]
# 一致の確認
p ary == ary0
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。