2016年7月12日火曜日

160712

Ruby


平面的2進数(2)

1 を足していってn にするのではなく、直接n を求めてみた。

def f(n)
  # lは大きめ
  l = 100
  a = Array.new(l){Array.new(l, 0)}
  a[0][0] = n
  flag = true
  m, x = 0, 0
  while flag
    flag = false
    (0..m).each{|i|
      a[i][m - i], j = a[i][m - i] % 2, a[i][m - i] / 2
      if j > 0
        flag = true
        x = [i + 1, x].max
        a[i + 1][m - i] += j
        a[i][m - i + 1] += j
      end
    }
    m += 1
  end
  (0..x).each{|i| p a[x - i][0..x].reverse}
  return ""
end

(0..37).each{|i|
  p i
  p f(i)
}

出力結果
0
[0]
""
1
[1]
""
2
[0, 1]
[1, 0]
""
3
[0, 1]
[1, 1]
""
4
[0, 1, 1]
[1, 0, 0]
[1, 0, 0]
""
5
[0, 1, 1]
[1, 0, 0]
[1, 0, 1]
""
6
[0, 1, 1]
[1, 0, 1]
[1, 1, 0]
""
7
[0, 1, 1]
[1, 0, 1]
[1, 1, 1]
""
8
[0, 1, 1, 1]
[1, 0, 1, 0]
[1, 1, 0, 0]
[1, 0, 0, 0]
""
9
[0, 1, 1, 1]
[1, 0, 1, 0]
[1, 1, 0, 0]
[1, 0, 0, 1]
""
10
[0, 1, 1, 1]
[1, 0, 1, 0]
[1, 1, 0, 1]
[1, 0, 1, 0]
""
11
[0, 1, 1, 1]
[1, 0, 1, 0]
[1, 1, 0, 1]
[1, 0, 1, 1]
""
12
[0, 1, 1, 1, 0]
[1, 0, 1, 0, 1]
[1, 1, 0, 0, 1]
[1, 0, 0, 0, 0]
[0, 1, 1, 0, 0]
""
13
[0, 1, 1, 1, 0]
[1, 0, 1, 0, 1]
[1, 1, 0, 0, 1]
[1, 0, 0, 0, 0]
[0, 1, 1, 0, 1]
""
14
[0, 1, 1, 1, 0]
[1, 0, 1, 0, 1]
[1, 1, 0, 0, 1]
[1, 0, 0, 0, 1]
[0, 1, 1, 1, 0]
""
15
[0, 1, 1, 1, 0]
[1, 0, 1, 0, 1]
[1, 1, 0, 0, 1]
[1, 0, 0, 0, 1]
[0, 1, 1, 1, 1]
""
16
[0, 1, 1, 1, 1, 0]
[1, 0, 1, 1, 0, 1]
[1, 1, 0, 1, 0, 0]
[1, 1, 1, 0, 0, 0]
[1, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 0, 0]
""
17
[0, 1, 1, 1, 1, 0]
[1, 0, 1, 1, 0, 1]
[1, 1, 0, 1, 0, 0]
[1, 1, 1, 0, 0, 0]
[1, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 0, 1]
""
18
[0, 1, 1, 1, 1, 0]
[1, 0, 1, 1, 0, 1]
[1, 1, 0, 1, 0, 0]
[1, 1, 1, 0, 0, 0]
[1, 0, 0, 0, 0, 1]
[0, 1, 0, 0, 1, 0]
""
19
[0, 1, 1, 1, 1, 0]
[1, 0, 1, 1, 0, 1]
[1, 1, 0, 1, 0, 0]
[1, 1, 1, 0, 0, 0]
[1, 0, 0, 0, 0, 1]
[0, 1, 0, 0, 1, 1]
""
20
[0, 1, 1, 1, 1, 0]
[1, 0, 1, 1, 0, 1]
[1, 1, 0, 1, 0, 0]
[1, 1, 1, 0, 1, 1]
[1, 0, 0, 1, 0, 0]
[0, 1, 0, 1, 0, 0]
""
21
[0, 1, 1, 1, 1, 0]
[1, 0, 1, 1, 0, 1]
[1, 1, 0, 1, 0, 0]
[1, 1, 1, 0, 1, 1]
[1, 0, 0, 1, 0, 0]
[0, 1, 0, 1, 0, 1]
""
22
[0, 1, 1, 1, 1, 0]
[1, 0, 1, 1, 0, 1]
[1, 1, 0, 1, 0, 0]
[1, 1, 1, 0, 1, 1]
[1, 0, 0, 1, 0, 1]
[0, 1, 0, 1, 1, 0]
""
23
[0, 1, 1, 1, 1, 0]
[1, 0, 1, 1, 0, 1]
[1, 1, 0, 1, 0, 0]
[1, 1, 1, 0, 1, 1]
[1, 0, 0, 1, 0, 1]
[0, 1, 0, 1, 1, 1]
""
24
[0, 1, 1, 1, 1, 0, 0]
[1, 0, 1, 1, 0, 1, 0]
[1, 1, 0, 1, 0, 0, 1]
[1, 1, 1, 0, 0, 1, 1]
[1, 0, 0, 0, 0, 1, 0]
[0, 1, 0, 1, 1, 0, 0]
[0, 0, 1, 1, 0, 0, 0]
""
25
[0, 1, 1, 1, 1, 0, 0]
[1, 0, 1, 1, 0, 1, 0]
[1, 1, 0, 1, 0, 0, 1]
[1, 1, 1, 0, 0, 1, 1]
[1, 0, 0, 0, 0, 1, 0]
[0, 1, 0, 1, 1, 0, 0]
[0, 0, 1, 1, 0, 0, 1]
""
26
[0, 1, 1, 1, 1, 0, 0]
[1, 0, 1, 1, 0, 1, 0]
[1, 1, 0, 1, 0, 0, 1]
[1, 1, 1, 0, 0, 1, 1]
[1, 0, 0, 0, 0, 1, 0]
[0, 1, 0, 1, 1, 0, 1]
[0, 0, 1, 1, 0, 1, 0]
""
27
[0, 1, 1, 1, 1, 0, 0]
[1, 0, 1, 1, 0, 1, 0]
[1, 1, 0, 1, 0, 0, 1]
[1, 1, 1, 0, 0, 1, 1]
[1, 0, 0, 0, 0, 1, 0]
[0, 1, 0, 1, 1, 0, 1]
[0, 0, 1, 1, 0, 1, 1]
""
28
[0, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 0, 1, 1, 1]
[1, 0, 0, 0, 0, 0, 0, 1]
[0, 1, 0, 1, 0, 0, 0, 1]
[0, 0, 1, 1, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 1, 0, 0]
""
29
[0, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 0, 1, 1, 1]
[1, 0, 0, 0, 0, 0, 0, 1]
[0, 1, 0, 1, 0, 0, 0, 1]
[0, 0, 1, 1, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 1, 0, 1]
""
30
[0, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 0, 1, 1, 1]
[1, 0, 0, 0, 0, 0, 0, 1]
[0, 1, 0, 1, 0, 0, 0, 1]
[0, 0, 1, 1, 0, 0, 0, 1]
[0, 0, 0, 1, 1, 1, 1, 0]
""
31
[0, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 0, 1, 1, 1]
[1, 0, 0, 0, 0, 0, 0, 1]
[0, 1, 0, 1, 0, 0, 0, 1]
[0, 0, 1, 1, 0, 0, 0, 1]
[0, 0, 0, 1, 1, 1, 1, 1]
""
32
[0, 1, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 1, 0, 0, 0, 1]
[1, 1, 1, 1, 0, 0, 1, 1, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 1, 0, 0, 0, 0]
[0, 0, 1, 0, 1, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0, 0]
""
33
[0, 1, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 1, 0, 0, 0, 1]
[1, 1, 1, 1, 0, 0, 1, 1, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 1, 0, 0, 0, 0]
[0, 0, 1, 0, 1, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0, 1]
""
34
[0, 1, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 1, 0, 0, 0, 1]
[1, 1, 1, 1, 0, 0, 1, 1, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 1, 0, 0, 0, 0]
[0, 0, 1, 0, 1, 0, 0, 0, 1]
[0, 0, 0, 1, 0, 0, 0, 1, 0]
""
35
[0, 1, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 1, 0, 0, 0, 1]
[1, 1, 1, 1, 0, 0, 1, 1, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 1, 0, 0, 0, 0]
[0, 0, 1, 0, 1, 0, 0, 0, 1]
[0, 0, 0, 1, 0, 0, 0, 1, 1]
""
36
[0, 1, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 1, 0, 0, 0, 1]
[1, 1, 1, 1, 0, 0, 1, 1, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 1, 0, 0, 1, 1]
[0, 0, 1, 0, 1, 0, 1, 0, 0]
[0, 0, 0, 1, 0, 0, 1, 0, 0]
""
37
[0, 1, 1, 1, 1, 1, 0, 0, 0]
[1, 0, 1, 1, 1, 0, 1, 0, 0]
[1, 1, 0, 1, 1, 0, 0, 1, 0]
[1, 1, 1, 0, 1, 0, 0, 0, 1]
[1, 1, 1, 1, 0, 0, 1, 1, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 1, 0, 0, 1, 1]
[0, 0, 1, 0, 1, 0, 1, 0, 0]
[0, 0, 0, 1, 0, 0, 1, 0, 1]
""

0 件のコメント:

コメントを投稿

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