login
A105083
Trajectory of 1 under the morphism 1 -> 12, 2 -> 3, 3 -> 1.
6
1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 1, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 1, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 1, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 1, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2
OFFSET
0,2
LINKS
P. Arnoux and E. Harriss, What is a Rauzy Fractal?, Notices Amer. Math. Soc., 61 (No. 7, 2014), 768-770, also p. 704 and front cover.
Marcy Barge and Jaroslaw Kwapisz, Geometric theory of unimodular Pisot substitutions, Amer. J. Math. 128 (2006), no. 5, 1219--1282. MR2262174 (2007m:37039). See Fig. 18.1. - N. J. A. Sloane, Aug 06 2014
Victor F. Sirvent and Yang Wang, Self-Affine Tiling via Substitution Dynamical Systems and Rauzy Fractals, Pac. J. Math., 206 (2002), 465-485. See Example 2.2 and Figure 2 pp. 474-475.
FORMULA
From Aresh Pourkavoos, Jan 26 2021: (Start)
Limit S(infinity) of the following strings: S(0) = 2, S(1) = 1, S(2) = 0, S(n+3) = S(n+2)S(n). S(n) has length A000930(n).
Individual terms of a(n) may also be found by greedily writing n as a sum of entries of A000930. a(n) is 2 if the smallest term is 1, 3 if the smallest term is 2, and 1 otherwise.
(End)
MATHEMATICA
Nest[ Function[ l, {Flatten[(l /. {1 -> {1, 2}, 2 -> {3}, 3 -> {1}})] }], {1}, 12]
PROG
(Python)
N_TERMS=10000
def a():
# Index of the current term
n = 0
# Stores the place values of the greedy representation of n,
# minus two since A000930 begins with duplicate ones.
places = []
# Edge case: a(0)=1.
yield 0, 1
while True:
n += 1
# Add A000930(2+0)=1 to the representation of n
places.append(0)
# Apply carryover rule for as long as necessary:
# if places contains n+2 and n,
# both terms are replaced by n+3.
while len(places) > 1 and places[-2] <= places[-1]+2:
places.pop()
places[-1] += 1
# Look at the smallest term to decide a(n)
an = 1 if places[-1] > 1 else places[-1]+2
yield n, an
# Asymptotic behavior is O(log(n)*log(log(n))) memory
# and O(n) time to generate the first n terms,
# although a term may take as long as O(log(n)).
for n, an in a():
print(n, an)
if (n >= N_TERMS):
break
# Aresh Pourkavoos, Jan 26 2021
CROSSREFS
KEYWORD
nonn
AUTHOR
Roger L. Bagula, Apr 06 2005
EXTENSIONS
Edited by N. J. A. Sloane, Oct 10 2007 and Aug 03 2014
STATUS
approved