2019年11月2日土曜日

191102

Ruby


Toothpick Sequence(2)

A147614 およびA139250 を出力してみた。

def A(n)
  a = [[0, 0]]
  # 爪楊枝の上にある格子点の個数
  g = [0]
  # 次のステップで置く爪楊枝の真ん中
  b = [[0, 0]]
  s = 0
  ary = [0]
  (1..n).each{|i|
    c = []
    s += b.size
    ary << s
    b.each{|j|
      k, l = i % 2, (i + 1) % 2
      c << [j[0] + k, j[1] + l]
      c << [j[0] - k, j[1] - l]
    }
    b = c.group_by(&:to_a).select{|k, v| v.size == 1}.keys - a
    a += c
    a.uniq!
    g << a.size
  }
  p g
  ary
end

p A(20)

出力結果
[0, 3, 7, 13, 19, 27, 39, 53, 63, 71, 83, 99, 119, 147, 183, 217, 235, 243, 255, 271, 291]
[0, 1, 3, 7, 11, 15, 23, 35, 43, 47, 55, 67, 79, 95, 123, 155, 171, 175, 183, 195, 207]

0 件のコメント:

コメントを投稿

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