cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A376004 Limiting matrix {m_n}, where m_0 = 1 and m_{i+1} = [[m_i, A(m_i)], [B(m_i), C(m_i)]], read by antidiagonals, and A adds the corresponding x-coords to every element, B subtracts it, and C adds the corresponding y-coords.

Original entry on oeis.org

1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 1, 2, 1, 0, 1, 2, 1, 1, 2, 0, 1, 3, 2, 1, 2, -1, 0, 1, 5, 3, 1, 1, -1, -1, -1, 1, 1, 5, 3, 1, 1, -1, -1, -1, 1, 2, 1, 4, 4, 1, 2, -2, 0, 0, 1, 3, 2, 1, 5, 1, 2, 3, -1, -1, 0, 1, 5, 3, 1, 1, 2, 2, 2, 4, -1, -1, -1, 1, 5, 5, 3, 1, 1, 3, 3, 3, -3, -1, -1, -1, 1
Offset: 1

Views

Author

Bryle Morga, Sep 05 2024

Keywords

Comments

Start with M_0 = [[1]]. M_n is a 2^n X 2^n matrix. M_{n+1} is constructed from M_n as follows:
| M_n A(M_n) |
M_{n+1} = | |
| B(M_n) C(M_n) |
A - adds the corresponding x-coords to the elements of the matrix
B - subtracts the corresponding x-coords to the elements of the matrix
C - adds the corresponding y-coords to the elements of the matrix
The coordinate system sets the top-left corner to be (0, 0).
Then we take the limiting matrix {M_n}, and turn it into an integer sequence by reading it by antidiagonals.

Examples

			M_0 = [1] by definition. Constructing M_1 goes as follows:
A(M_0) = M_0 + [0] = [1]
B(M_0) = M_0 - [0] = [1]
C(M_0) = M_0 + [0] = [1]
So we have:
            |  1    1 |
M_1 =       |  1    1 |
From this M_2 can be constructed:
A(M_2) = M_1+[[0, 1],[0, 1]] = [[1, 2], [1, 2]]
B(M_2) = M_1-[[0, 1],[0, 1]] = [[1, 0], [1, 0]]
C(M_2) = M_1+[[0, 0],[1, 1]] = [[1, 1], [2, 2]]
      | 1 1 1 2 |
      | 1 1 1 2 |
M_2 = | 1 0 1 1 |
      | 1 0 2 2 |
		

Programs

  • Python
    def expand(m):
      i = len(m)
      res = [[0 for  in range(2*i)] for  in range(2*i)]
      for x in range(i):
        for y in range(i):
          res[y][x] = m[y][x]
          res[y][x+i] = m[y][x] + x
          res[y+i][x] = m[y][x] - x
          res[y+i][x+i] = m[y][x] + y
      return res
    a = []
    m = [[1]]
    for _ in range(11):
      m = expand(m)
    for i in range(len(m)):
      for j in range(i+1):
        a.append(m[j][i-j])