A332762
A322178 を元に、コードを書いた。
# d個とばし
def search(a, num, d, k, n)
if num == 0
@cnt += 1
else
# iはk * n - k以下、jはk * n - k + 1以下
(k * n - k + 1).times{|i|
if a[i] == 0
(i + d + 1..k * n - k + 1).each{|j|
if (k - 1) * j - (k - 2) * i < k * n
if (1..k - 1).all?{|m| a[m * j - (m - 1) * i] == 0}
(0..k - 1).each{|m| a[m * j - (m - 1) * i] = num}
search(a, num - 1, j - i - 1, k, n)
(0..k - 1).each{|m| a[m * j - (m - 1) * i] = 0}
end
end
}
end
}
end
end
def A(k, n)
a = [0] * k * n
@cnt = 0
search(a, n, 0, k, n)
@cnt
end
(2..7).each{|i| p [i, (0..6).map{|j| A(i, j)}]}
出力結果
[2, [1, 1, 5, 33, 329, 3825, 57293]]
[3, [1, 1, 4, 18, 124, 738, 7464]]
[4, [1, 1, 4, 16, 110, 544, 5444]]
[5, [1, 1, 4, 16, 104, 508, 5136]]
[6, [1, 1, 4, 16, 104, 484, 4968]]
[7, [1, 1, 4, 16, 104, 484, 4848]]
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。