A123895 Restricted growth string for the (decimal expansion of the) number n.
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
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.
Links
- Michael De Vlieger, Table of n, a(n) for n = 0..10000
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
Comments