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.

A241173 Start with n; add to it any of its digits; repeat; a(n) = minimal number of steps needed to reach a palindrome.

Original entry on oeis.org

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 2, 3, 2, 1, 4, 3, 2, 1, 1, 0, 3, 3, 2, 3, 3, 2, 4, 1, 3, 3, 0, 2, 2, 2, 1, 3, 2, 1, 2, 1, 3, 0, 2, 2, 3, 4, 2, 1, 4, 3, 2, 2, 0, 4, 3, 1, 3, 1, 4, 3, 1, 2, 2, 0, 3, 4, 3, 1, 3, 2, 2, 4, 2, 3, 0, 3, 1, 1, 3, 2, 3, 1, 2, 2, 3, 0, 5, 1, 2, 1, 4, 5, 2, 3, 4, 5, 0
Offset: 0

Views

Author

N. J. A. Sloane, Apr 23 2014

Keywords

Comments

a(n) = 0 iff n is already a palindrome (A002113).
Is it a theorem that a(n) always exists?
a(n) always exists. Proof: A palindrome can be reached by simply adding the initial digit until a palindrome with the same number of digits as the initial number is reached: If no palindrome is reached by then, this will yield a number with initial digit '1'. Thereafter, this procedure will yield the next larger palindrome - either not larger than 19...91 or, after 19...9 + 1 = 20...0, at 20...02. - M. F. Hasler, Apr 26 2014

Examples

			Examples for a(10) through a(23):
a(10) = 1 via 10 -> 11
a(11) = 0 via 11
a(12) = 3 via 12 -> 13 -> 16 -> 22
a(13) = 2 via 13 -> 16 -> 22
a(14) = 3 via 14 -> 15 -> 16 -> 22
a(15) = 2 via 15 -> 16 -> 22
a(16) = 1 via 16 -> 22
a(17) = 4 via 17 -> 18 -> 19 -> 20 -> 22
a(18) = 3 via 18 -> 19 -> 20 -> 22
a(19) = 2 via 19 -> 20 -> 22
a(20) = 1 via 20 -> 22
a(21) = 1 via 21 -> 22
a(22) = 0 via 22
a(23) = 3 via 23 -> 25 -> 30 -> 33
		

References

  • Eric Angelini, Posting to Sequence Fans Mailing List, Apr 20 2014

Crossrefs

Cf. A002113.
A241174 gives the smallest number that takes n steps to reach a palindrome.

Programs

  • Mathematica
    A241173[n_] := Module[{c, nx},
       If[n == IntegerReverse[n], Return[0]];
       c = 1; nx = n;
       While[ ! AnyTrue[nx = Flatten[nx + IntegerDigits[nx]], # == IntegerReverse[#] &], c++];
       Return[c]];
    Table[A241173[i], {i, 0, 100}] (* Robert Price, Mar 17 2019 *)
  • PARI
    a(n,m=0)={ if( m, my(d); for(i=1,#d=vecsort(digits(n),,12), d[i] && if( m>1, a(n+d[i],m-1) /*&& !print1("/*",[n,d[i],m],"* /")*/, is_A002113(n+d[i])) && return(m)), is_A002113(n) || until(a(n,m++),); m)} \\ Memoization should be implemented to improve performance which remains poor esp. for terms just above 10^k+1. - M. F. Hasler, Apr 26 2014
    
  • PARI
    \\ See Corneth link; faster than above. David A. Corneth, Mar 21 2019

Extensions

More terms from M. F. Hasler, Apr 26 2014