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.

A123895 Restricted growth string for the (decimal expansion of the) number n.

Original entry on oeis.org

0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 12, 11, 12, 12, 12, 12, 12, 12, 12, 10, 12, 12, 11, 12, 12, 12, 12, 12, 12, 10, 12, 12, 12, 11, 12, 12, 12, 12, 12, 10, 12, 12, 12, 12, 11, 12, 12, 12, 12, 10, 12, 12, 12, 12, 12, 11, 12, 12
Offset: 0

Views

Author

N. J. A. Sloane, Nov 20 2006

Keywords

Comments

Write n in base 10 prefixed with a 0. Read this string from left to right. Write a 0 each time you see the first distinct digit (which is 0), write a 1 each time you see the second distinct digit, write a 2 each time you see the third distinct digit and so on. Finally, delete the leading 0's.

Examples

			To find a(66041171): 066041171 -> 011023343 -> 11023343.
		

References

  • D. E. Knuth, The Art of Computer Programming, vol. 4A, Combinatorial Algorithms, Section 7.2.1.5, p. 432, Problems 4 and 5.

Crossrefs

Programs

  • Maple
    read("transforms"):
    A123895 := proc(n)
        local dgs,Lmap,idx,dig,pos,Lredu ;
        dgs := [op(convert(n,base,10)) ,0];
        Lmap := [] ;
        for idx from -1 to -nops(dgs) by -1 do
            dig := op(idx,dgs) ;
            if not member(dig,Lmap) then
                Lmap := [op(Lmap),dig] ;
            end if;
        end do:
        Lredu := [] ;
        for idx from -1 to -nops(dgs) by -1 do
            member(op(idx,dgs),Lmap,'pos') ;
            Lredu := [op(Lredu),pos-1] ;
        end do:
        digcatL(Lredu) ;
    end proc:
    seq(A123895(n),n=0..60) ; # R. J. Mathar, Dec 09 2015
  • Mathematica
    f[n_] := Block[{d = Prepend[IntegerDigits@ n, 0], a, b, w}, b = DeleteDuplicates@ d; a = Range[0, Length@ b]; w = FromDigits@ Flatten[Part[a, FirstPosition[b, #]] & /@ d]; w]; Table[f@ n, {n, 0, 67}] (* Michael De Vlieger, Dec 09 2015, Version 10 *)
  • VBA
    Public Function RestrictedGrowthString(ByVal x As String) As String
      Dim i As Long
      Dim dig As Integer
      Dim pos As Long
      For i = 1 To Len(x)
        If Mid(x, i, 1) = "0" Then
          RestrictedGrowthString = RestrictedGrowthString & "0"
        Else
          pos = InStr(x, Mid(x, i, 1))
          If pos = i Then
            dig = dig + 1
            RestrictedGrowthString = RestrictedGrowthString &
            Format(dig)
          Else
            RestrictedGrowthString = RestrictedGrowthString &
            Mid(RestrictedGrowthString, pos, 1)
          End If
        End If
      Next i
    End Function
    ' Franklin T. Adams-Watters