A368946 Irregular triangle read by rows: row n lists the strings of the MIU formal system at the n-th level of the tree generated by recursively applying the system rules, starting from the MI string (see comments and example).
31, 310, 311, 31010, 3110, 31111, 310101010, 3110110, 311110, 311111111, 301, 310, 31010101010101010, 3110110110110, 31111011110, 3010, 3100, 3111111110, 31111111111111111, 3011111, 3101111, 3110111, 3111011, 3111101, 3111110, 3010, 30101, 31010
Offset: 0
Examples
After recursively applying the rules three times, we get the following tree (cf. Hofstadter (1979), page 40, Figure 11). . MI 0 ---------------------- 31 / \ 1 2 <--- Rule applied / \ MIU MII 1 ---------------- 310 311 / / \ 2 1 2 / / \ MIUIU MIIU MIIII 2 --------- 31010 3110 31111 Here rule 3 can / / / | | \ be applied twice: 2 2 1 2 3 3 <--- it is first applied / / / | | \ to the leftmost MIUIUIUIU MIIUIIU MIIIIU | MUI MIU III substring 3 --- 310101010 3110110 311110 | 301 310 MIIIIIIII 311111111 . By reading the tree from top to bottom, left to right, the triangle begins: [0] 31; [1] 310 311; [2] 31010 3110 31111; [3] 310101010 3110110 311110 311111111 301 310; [4] 31010101010101010 3110110110110 ... 3010 ... 3010 30101 31010; ... Please note that some strings may be duplicated in different rows and within the same row: within the first four rows, the string MIU (310) is present in rows 1 and 3. In row 4, the string MUIU (3010) is present twice: it can be generated both by applying rule 3 to MIIIIU (311110) and by applying rule 1 to MUI (301). The initial string MI (31) first reappears in row 5.
References
- Douglas R. Hofstadter, Gödel, Escher, Bach: an Eternal Golden Braid, Basic Books, 1979, pp. 33-41 and pp. 261-262.
Links
- Paolo Xausa, Table of n, a(n) for n = 0..3670 (rows 0..7 of the triangle, flattened).
- Wikipedia, MU Puzzle.
- Index entries for sequences from "Goedel, Escher, Bach"
Crossrefs
Programs
-
Mathematica
MIUStepO[s_] := Flatten[Map[{If[StringEndsQ[#, "1"], # <> "0", Nothing], # <> StringDrop[#, 1], StringReplaceList[#, "111" -> "0"], StringReplaceList[#, "00" -> ""]}&, s]]; With[{rowmax = 4}, Map[FromDigits, NestList[MIUStepO, {"31"}, rowmax], {2}]]
-
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 from [int(t) for t in frontier] reach1 = [m for p in frontier for m in moves(p)] frontier, reach1 = reach1, [] print(list(islice(agen(), 28))) # Michael S. Branicky, Jan 14 2024
Comments