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.

A284749 {001->2}-transform of the infinite Fibonacci word A003849.

Original entry on oeis.org

0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2
Offset: 1

Views

Author

Clark Kimberling, May 02 2017

Keywords

Comments

From Daniel Rust, Aug 18 2018: (Start)
This word is the fixed point of the morphism 0->2, 1->01, 2->2201 with the finite string 0, 1, 2, 0, 1 appended to the beginning. This morphism comes from taking the 'proper' version of the Fibonacci morphism 0->01, 1->1, given by 0->001, 1->01 (A189661 but with the rightmost 0 moved to the left of each image word), then replacing 001 with 2 and noting that the new symbol 2 should map to 00100101 = 2201 in order to be consistent.
The finite string appended to the beginning comes from the process of finding a proper version of the Fibonacci morphism using a return word encoding and taking conjugates which causes a shift of the respective fixed points.
(End)
This sequence is the unique fixed point of the morphism 0->01, 1->2, 2->0122. See the paragraph following Lemma 23 in the paper by Allouche and me. - Michel Dekking, Oct 05 2018

Examples

			As a word, A003849 = 01001010010010100..., and replacing each 001 by 2 gives 01201220120...
		

Crossrefs

Programs

  • Mathematica
    s = Nest[Flatten[# /. {0 -> {0, 1}, 1 -> {0}}] &, {0}, 13]  (* A003849 *)
    w = StringJoin[Map[ToString, s]]
    w1 = StringReplace[w, {"001" -> "2"}]
    st = ToCharacterCode[w1] - 48 (* A284749 *)
    Flatten[Position[st, 0]]  (* A214971 *)
    Flatten[Position[st, 1]]  (* A284624 *)
    Flatten[Position[st, 2]]  (* A284625 *)
  • Python
    from math import isqrt
    def A284624(n): return (n<<1)+(n-1+isqrt(5*(n-1)**2)>>1)
    def A284625(n): return (n+isqrt(5*n**2)&-2)-n+2
    def A284749(n):
        def bsearch(f, n):
            kmin, kmax = 0, 1
            while f(kmax) <= n:
                kmax <<= 1
            kmin = kmax>>1
            while True:
                kmid = kmax+kmin>>1
                if f(kmid) > n:
                    kmax = kmid
                else:
                    kmin = kmid
                if kmax-kmin <= 1:
                    break
            return kmin
        for i, f in enumerate((A284624, A284625),1):
            if f(bsearch(f,n))==n: return i
        return 0 # Chai Wah Wu, May 22 2025