|
|
A368954
|
|
Row lengths of A368953: in the MIU formal system, number of distinct strings n steps distant from the MI string.
|
|
2
|
|
|
1, 2, 3, 6, 15, 48, 232, 1544, 14959, 203333, 3919437, 105126522
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
0,2
|
|
COMMENTS
|
See A368946 for the description of the MIU formal system and A368953 for the variant where duplicates within a row are removed.
|
|
REFERENCES
|
Douglas R. Hofstadter, Gödel, Escher, Bach: an Eternal Golden Braid, Basic Books, 1979, pp. 33-41.
|
|
LINKS
|
|
|
FORMULA
|
|
|
MATHEMATICA
|
MIUStepDW3[s_] := DeleteDuplicates[Flatten[Map[{If[StringEndsQ[#, "1"], # <> "0", Nothing], # <> #, StringReplaceList[#, {"111" -> "0", "00" -> ""}]}&, s]]];
With[{rowmax = 9}, Map[Length, NestList[MIUStepDW3, {"1"}, rowmax]]]
|
|
PROG
|
(Python)
from itertools import islice
def occurrence_swaps(w, s, t):
out, oi = [], w.find(s)
while oi != -1:
out.append(w[:oi] + t + w[oi+len(s):])
oi = w.find(s, oi+1)
return out
def moves(w): # moves for word w in MIU system, encoded as 310
nxt = []
if w[-1] == '1': nxt.append(w + '0') # Rule 1
if w[0] == '3': nxt.append(w + w[1:]) # Rule 2
nxt.extend(occurrence_swaps(w, '111', '0')) # Rule 3
nxt.extend(occurrence_swaps(w, '00', '')) # Rule 4
return nxt
def agen(): # generator of terms
frontier = {'31'}
while len(frontier) > 0:
yield len(frontier)
reach1 = set(m for p in frontier for m in moves(p))
frontier, reach1 = reach1, set()
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn,hard,more
|
|
AUTHOR
|
|
|
EXTENSIONS
|
|
|
STATUS
|
approved
|
|
|
|