OFFSET
1,3
COMMENTS
If a(n + 1) > a(n) for some n, then A293700(n + 1) is in the longest palindrome. So to find a(n + 1) it suffices to check if A293700 is in the palindrome, which must be at least of length a(n). - David A. Corneth, Nov 25 2017
At points where a(n) = n, the whole sequence is a palindrome. For example at n=9105, the length of the longest palindrome a(9105) is 9105 (see A294923).
LINKS
Antti Karttunen, Table of n, a(n) for n = 1..10000 (computed with the given Scheme-program from the b-file of A293700 provided by Robert Israel)
V.J. Pohjola, Line plot of n, a(n) for n=1...100
V.J. Pohjola, Line plot of n, a(n) for n=1...1400
V.J. Pohjola, Line plot of n, a(n) for n=1...10000
EXAMPLE
For n = 1, roots = 1, 4; first differences = 3; longest palindrome = 3; a(n) = 1.
For n = 2, roots = 1, 4, 23; first differences = 3, 19; longest palindrome = 3; a(n) = 1.
For n = 3, roots = 1, 4, 23, 26; first differences = 3, 19, 3; longest palindrome = 3, 19, 3; a(n) = 3.
For n = 33, roots = 1, 4, 23, 26, 45, 48, 67, 70, 89, 92, 111, 114, 133, 136, 155, 158, 177, 180, 183, 199, 202, 205, 221, 224, 227, 243, 246, 249, 265, 268, 271, 290, 293, 312; first differences = 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 3, 16, 3, 3, 16, 3, 3, 16, 3, 3, 16, 3, 3, 19, 3, 19; longest palindrome = 19, 3, 19, 3, 3, 16, 3, 3, 16, 3, 3, 16, 3, 3, 16, 3, 3, 19, 3, 19; a(n) = 20.
MATHEMATICA
rootsp = Flatten[Position[Table[Floor[Tan[i]], {i, 1, 10^4}], 1]];
lrootsp = Length[rootsp];
difp = Differences[rootsp];
ldp = Length[difp];
nmax = 200; palsp = {}; lenpalsp = {0};
Do[diffip = difp[[1 ;; n]]; lendiffip = Length[diffip];
pmax = n - Last[lenpalsp];
t = Table[difp[[p ;; n]], {p, 1, pmax}];
sp = Flatten[Select[t, # == Reverse[#] &]];
If[sp == {},
AppendTo[palsp, Last[palsp]] && AppendTo[lenpalsp, Last[lenpalsp]],
AppendTo[palsp, sp] && AppendTo[lenpalsp, Length[Flatten[sp]]]], {n, 1, nmax}];
Drop[lenpalsp, 1](*a(n)=Drop[lenpalsp, 1][[n]]*)
PROG
(PARI) firstsols(n) = {my(res = vector(n), i = 0, pi = [Pi, Pi], sols = [atan(1), atan(2)]); while(1, for(j = ceil(sols[1]), floor(sols[2]), i++; if(i>n, return(res)); res[i] = j); sols+=[Pi(), Pi()])} \\ A293698
diff(v) = vector(#v-1, i, v[i+1]-v[i]);
first(n) = {my(res = vector(n), m = 0, check = diff(firstsols(n+1))); for(i=1, n, for(j = 1, i - m, if(ispalindrome(check, j, i), m = i - j + 1; next(1))); res[i] = m); res}
ispalindrome(v, {llim = 1}, {ulim = #v}) = {for(i=0, (ulim - llim) \ 2, if(v[llim + i]!=v[ulim - i], return(0))); 1} \\ David A. Corneth, Nov 25 2017
(Scheme)
;; This uses memoization-macro definec and assumes also that A293700 is available:
(definec (A293701 n) (if (= 1 n) n (let outloop ((k n)) (cond ((<= k (A293701 (- n 1))) (A293701 (- n 1))) (else (let inloop ((i n)) (let ((low-ind (+ 1 (- n k) (- n i)))) (cond ((< i low-ind) (max k (A293701 (- n 1)))) ((not (= (A293700 i) (A293700 low-ind))) (outloop (- k 1))) (else (inloop (- i 1)))))))))))
;; Antti Karttunen, Nov 25 2017
CROSSREFS
KEYWORD
nonn,easy
AUTHOR
V.J. Pohjola, Oct 16 2017
STATUS
approved