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.

A329447 Start with a(0)=0; thereafter, look left and identify the least frequent digit d so far (in case of a tie, choose the smallest d): after then a(n) = 10c + d, where c > 0 is the number of times d has appeared so far.

Original entry on oeis.org

0, 10, 11, 20, 12, 22, 30, 13, 23, 33, 40, 14, 24, 34, 44, 50, 15, 25, 35, 45, 55, 60, 16, 26, 36, 46, 56, 66, 70, 17, 27, 37, 47, 57, 67, 77, 80, 18, 28, 38, 48, 58, 68, 78, 88, 90, 19, 29, 39, 49, 59, 69, 79, 89, 99, 100, 112, 113, 114, 115, 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, 128, 129
Offset: 0

Views

Author

Eric Angelini and M. F. Hasler, Nov 14 2019

Keywords

Comments

The term "10c + d" are to be read "c digits d have appeared so far", as in the "look and see" sequences llike A045918.
It follows immediately from the definition that all terms are distinct. For a sorted list of the terms, see A376779. For a tabular method of computing a(n), see the triangle in A377905. - N. J. A. Sloane, Nov 11 2024
An analogous sequence may be obtained for any initial term a(0). Sequence A329448 lists the starting values that will appear a second time later in the respective sequence.

Crossrefs

Cf. A045918 (describe n), A005150 (the classic "Say What You See"), A139282 (count vowels so far), A139097 (count letters so far).
A376779 gives terms in increasing order. See also A377905.

Programs

  • Maple
    a[0]:= 0;
    S[0]:= 1:
    for i from 1 to 9 do S[i]:= 0 od:
    for n from 1 to 100 do
      a[n]:= min(select(`>=`,[seq(10*S[i]+i, i=0..9)],10));
      L:= convert(a[n],base,10);
      for d from 0 to 9 do S[d]:= S[d] + numboccur(d,L) od;
    od:
    seq(a[n],n=0..100); # Robert Israel, Nov 14 2019
  • PARI
    A329447_vec(N)={my(c=Vec(1,10),t); vector(N,i, for(j=1, #i=vecsort(c,,1), if(c[i[j]], i=i[j];break)); for(j=1, #i=digits(t=c[i]*10+i-1), c[i[j]+1]++);t)} \\ Returns the vector a(1..N)
    
  • Python
    from itertools import islice
    def agen():  # generator of terms
        counts = [1] + [0 for i in range(1, 10)]
        yield 0
        while True:
            m = float('inf')
            for i in range(10):
                if counts[i] and counts[i] < m:
                    m, argm = counts[i], i
            an = 10*m + argm
            yield an
            for d in str(an): counts[int(d)] += 1
    print(list(islice(agen(), 72))) # Michael S. Branicky, Nov 11 2024

Extensions

Edited by N. J. A. Sloane, Nov 10 2024