login
Largest palindrome <= n.
87

%I #38 Jun 26 2021 02:14:59

%S 0,1,2,3,4,5,6,7,8,9,9,11,11,11,11,11,11,11,11,11,11,11,22,22,22,22,

%T 22,22,22,22,22,22,22,33,33,33,33,33,33,33,33,33,33,33,44,44,44,44,44,

%U 44,44,44,44,44,44,55,55,55,55,55,55,55,55,55,55,55,66,66,66,66,66,66,66,66,66,66,66,77,77

%N Largest palindrome <= n.

%C Might be called the palindromic floor function.

%C Let P(n) = n with the second half of its digits replaced by the first half of the digits in reverse order. If P(n) <= n, then a(n) = P(n), else if n=10^k then a(n) = n-1, else a(n) = P(n-10^floor(d/2)), where d is the number of digits of n. - _M. F. Hasler_, Sep 08 2015

%C The largest differences of n - a(n) occur for n = m*R(2k) - 1, where 1 <= m <= 9 and R(k)=(10^k-1)/9. In this case, n - a(n) = 1.1*10^k - 1. - _M. F. Hasler_, Sep 05 2018

%H Reinhard Zumkeller, <a href="/A261423/b261423.txt">Table of n, a(n) for n = 0..10000</a>

%H Eric Weisstein's World of Mathematics, <a href="http://mathworld.wolfram.com/PalindromicNumber.html">Palindromic Number</a>

%H Wikipedia, <a href="http://www.wikipedia.org/wiki/Palindromic_number">Palindromic number</a>

%H <a href="/index/Pac#palindromes">Index entries for sequences related to palindromes</a>

%F n - a(n) < 1.1*10^floor(d/2), where d = floor(log_10(n)) + 1 is the number of digits of n. - _M. F. Hasler_, Sep 05 2018

%p # P has list of palindromes

%p palfloor:=proc(n) global P; local i;

%p for i from 1 to nops(P) do

%p if P[i]=n then return(n); fi;

%p if P[i]>n then return(P[i-1]); fi;

%p od:

%p end;

%t palQ[n_] := Block[{d = IntegerDigits@ n}, d == Reverse@ d]; Table[k = n;

%t While[Nand[palQ@ k, k > -1], k--]; k, {n, 0, 78}] (* _Michael De Vlieger_, Sep 09 2015 *)

%o (PARI) A261423(n,d=digits(n),m=sum(k=1,#d\2,d[k]*10^(k-1)))={if( n%10^(#d\2)<m, n==10^valuation(n,10)&&return(n-1); d=digits(n-=10^(#d\2) /*#digits may decrease!*/); sum(k=1,#d\2,d[k]*10^(k-1)), m)+n-n%10^(#d\2)} \\ _M. F. Hasler_, Sep 08 2015, minor edit on Sep 05 2018

%o (Haskell)

%o a261423 n = a261423_list !! n

%o a261423_list = tail a261914_list -- _Reinhard Zumkeller_, Sep 16 2015

%o (Python)

%o def P(n):

%o s = str(n); h = s[:(len(s)+1)//2]; return int(h + h[-1-len(s)%2::-1])

%o def a(n):

%o s = str(n)

%o if s == '1'+'0'*(len(s)-1) and n > 1: return n - 1

%o Pn = P(n)

%o return Pn if Pn <= n else P(n - 10**(len(s)//2))

%o print([a(n) for n in range(79)]) # _Michael S. Branicky_, Jun 25 2021

%Y Cf. A002113, A261424, A261914 (previous palindrome).

%Y Cf. A262038.

%Y Sequences related to palindromic floor and ceiling: A175298, A206913, A206914, A261423, A262038, and the large block of consecutive sequences beginning at A265509.

%Y A262257(n) = Levenshtein distance between n and a(n). - _Reinhard Zumkeller_, Sep 16 2015

%K nonn,base

%O 0,3

%A _N. J. A. Sloane_, Aug 28 2015