# https://[Log in to view URL]

n, it, rule = [int(input()) for _ in range(3)]

def get_steps(n, it, rule):
    seen = {}
    b = [*map(int, f"{rule:08b}")]
    dct = {tuple(map(int, f"{i:03b}")) : b[7 - i] for i in reversed(range(8))}
    line = [1 if i == n // 2 else 0 for i in range(n)]
    k = 0
    while k < it:
        hsh = ''.join(map(str, line))
        if hsh in seen:
            print(hsh)
            return k - seen[hsh]
        else:
            seen[hsh] = k
        _line = [0] * n
        for i, c in enumerate(line):
            t = tuple(line[j % n] for j in (i - 1, i, i + 1))
            _line[i] = dct[t]
        line = _line
        print(hsh, seen)
        k += 1
    return "BIG"

def cellular_automaton(n, rule, steps):
    ans = []
    squares = "▯▮" # "▯▮"
    b = [*map(int, f"{rule:08b}")]
    dct = {tuple(map(int, f"{i:03b}")) : b[7 - i] for i in reversed(range(8))}
    line = [1 if i == n // 2 else 0 for i in range(n)]
    k = 0
    while k < steps:
        hsh = ''.join(map(lambda x: squares[x], line))
        ans.append(hsh)
        _line = [0] * n
        for i, c in enumerate(line):
            t = tuple(line[j % n] for j in (i - 1, i, i + 1))
            _line[i] = dct[t]
        line = _line
        k += 1
    return "\n".join(ans)

r = cellular_automaton(45, 30, 20)
print(r)
# r = get_steps(n, it, rule)
# print(r)

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: