[go: up one dir, main page]

login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A320100
Automata sum similar to A102376 but using mod 5.
2
4, 16, 44, 61, 4, 16, 64, 176, 244, 16, 64, 201, 324, 556, 44, 176, 324, 736, 1004, 61, 244, 556, 1004, 1561, 4, 16, 64, 176, 244, 16, 64, 256, 704, 976, 64, 256, 804, 1296, 2224, 176, 704, 1296, 2944, 4016, 244, 976, 2224, 4016, 6244, 16, 64, 201, 324, 556
OFFSET
1,1
COMMENTS
The automata that generates this sequence operates on a grid of cells c(i,j). The cells in the automata have five possible values, [0-4]. The next generation in the CA is calculated by applying the following rule to each cell: c(i,j) = ( c(i+1,j-1) + c(i+1,j+1) + c(i-1,j-1) + c(i-1,j+1) ) mod 5.
Start with a single cell with a value of 1, with all other cells set to 0. For each generation, the term in this sequence c(n) is the aggregate values of all cells in the grid for each discrete generation of the automaton (i.e., not cumulative over multiple generations).
The cellular automaton that generates this sequence has been empirically observed to repeat the number of active cells (4 in this case) if the iteration number N is a power of the modulus + 1. The modulus in this case is 5.
This has been observed to occur with any prime mod and any starting pattern of cells. I'm picking this particular implementation because it's the same as the one used in A102376.
Counting the active (nonzero) cells instead of taking the sum also creates a different but related sequence. This sequence is the sum of each iteration, and cells in this automaton have values 0, 1, 2, 3 or 4. Only for mod 2 are both the sum and active cell counts the same.
LINKS
PROG
(Python)
# requires scipy library (try pip install scipy)
# more info: https://www.scipy.org/scipylib/download.html)
import numpy as np
from scipy import signal
frameSize = 301
filter = [[0, 1, 0], [1, 0, 1], [0, 1, 0]] # this defines the CA neighborhood
frame = np.zeros((frameSize, frameSize))
frame[int(frameSize/2), int(frameSize/2)] = 1
mod = 5
sequence = []
for j in range(140):
frame = signal.convolve2d(frame, filter, mode='same')
frame = np.mod(frame, mod)
# If you want to visualize the automaton you can use a tool
# like opencv (pip install opencv-python) to save the frame
# as an image each iteration.
# i:e:(with other imports) import cv2
# (inside loop) cv2.imwrite('automatonFrame%s.png' % j, frame)
sequence.append(int(np.sum(frame.reshape(1, -1))))
print(sequence)
CROSSREFS
Cf. A102376 (mod 2), A320030 (mod 3).
Sequence in context: A227012 A034131 A183536 * A161142 A259013 A212960
KEYWORD
nonn
AUTHOR
Nathan M Epstein, Dec 10 2018
STATUS
approved