A293701 a(n) is the length of the longest palindromic subsequence in the first n terms of A293700.
1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 47, 49
Offset: 1
Examples
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.
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
Programs
-
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]]*)
-
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
Comments