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.

A336287 Period of orbit of Post's tag system ({0,1},{(0,1),(1,00110)},3,100^n).

Original entry on oeis.org

2, 0, 28, 0, 20, 0, 28, 0, 28, 144, 28, 0, 28, 0, 10556, 426, 10556, 0, 10556, 426, 10556, 104, 28, 0, 10556, 426, 10556, 104, 28, 0, 10556, 104, 10556, 426, 28, 426, 28, 0, 28, 426, 28, 1896, 10556, 1896, 10556, 0, 28, 426, 28, 426, 10556, 0, 28, 1896, 10556
Offset: 1

Views

Author

A.H.M. Smeets, Jul 16 2020

Keywords

Comments

In general a tag as defined by Emil Leon Post, is given by a 4-tuple (Sigma,AF,n,w0), where Sigma is some (nonempty) set of symbols called the alphabet, AF is the associated function (sometimes also called set of production rules) AF: Sigma -> Sigma*, n is the deletion number and w0 the initial string.
From the starting sequence we obtain a new string in each step by adjoining the string associated to the prefix symbol of the string, where after the prefix n symbols are removed from the string.
The decision problem is: will the tag end up in an empty string, a(n) = 0 or not, a(n) <> 0?
a(n) is an even number. Proof: for each cycle the number of associations (productions) 0 -> 1 must equal the number of associations (productions) 1 -> 00110 applied within a cycle.

Crossrefs

Programs

  • Python
    def step(w):
        i = 0
        while w[0] != alfabet[i]:
            i = i+1
        w = w+suffix[i]
        return w[n:len(w)]
    alfabet, suffix, n, ws, w0, m = "01", ["1","00110"], 3, "100", "", 0
    while m >= 0:
        w0, m = w0+ws, m+1
        w, ww, i, a = w0, w0, 0, 0
        while w != "" and a == 0:
            w, i = step(w), i+1
            if i%100000 == 0:
                ww = w
            else:
                if w == ww or w == "":
                    if w != "":
                        a = i%100000
                    print(m,a)