OFFSET
0,1
COMMENTS
Equivalently: the number of times the function A348783 must be iterated, starting with n, before a value occurs for the second time.
It can be shown that the trajectory of all numbers end in one of the two limit cycles (21, 110) or (22, 200, 102, 111, 30, 1001). Therefore a(n) >= 2 with equality iff n = 21 or n = 110.
EXAMPLE
Under iterations of A348783, 0 -> 1 -> 10 -> 11 -> 20 -> 101 -> 21 -> 110 -> 21 -> ...: here, the cycle (21, 110) is reached, so the orbit of 0 is O(0) = {0, 1, 10, 11, 20, 101, 21, 110}, of size a(0) = 8. We may also deduce that a(1) = 7, a(10) = 6, a(11) = 5, a(20) = 4, a(101) = 3 and a(21) = a(110) = 2 which is the length of the cycle these elements belong to.
Similarly, 2 -> 100 -> 12 -> 110 -> 21 -> ..., so the orbit of 2 is O(2) = {2, 100, 12, 110, 21}, of size a(2) = 5. We also deduce a(100) = 4 and a(12) = 3.
Then, 3 -> 1000 -> 13 -> 1010 -> 22 -> 200 -> 102 -> 111 -> 30 -> 1001 -> 22 -> 200 -> ..., here the cycle (22, 200, 102, 111, 30, 1001) is reached, and we have the orbit O(3) = {3, 1000, 13, 1010, 22, 200, 102, 111, 30, 1001}, of size a(3) = 10, and also a(1000) = 9, a(13) = 8, a(1010) = 7 and a(n) = 6 for the elements of that cycle.
MATHEMATICA
Array[-1 + Length@ NestWhileList[FromDigits@ RotateLeft@ Reverse@ DigitCount[#] &, #, UnsameQ[##] &, All] &, 60, 0] (* Michael De Vlieger, Nov 23 2021 *)
PROG
(PARI) apply( {A349250(n, S=[n])=while(!setsearch(S, n=A348783(n)), S=setunion(S, [n])); #S}, [0..99])
(Python)
def f(n):
s = str(n)
return int("".join(str(s.count(d)) for d in "9876543210").lstrip("0"))
def a(n):
orbit, fn = {n}, f(n)
while fn not in orbit:
orbit.add(fn)
n, fn = fn, f(fn)
return len(orbit)
print([a(n) for n in range(70)]) # Michael S. Branicky, Nov 18 2021
CROSSREFS
KEYWORD
nonn,base
AUTHOR
M. F. Hasler, Nov 17 2021
STATUS
approved