OFFSET
0,3
MAPLE
ispal:= proc(n) global b; # test if n is base-b palindrome
local L, Ln, i;
L:= convert(n, base, b);
Ln:= nops(L);
for i from 1 to floor(Ln/2) do
if L[i] <> L[Ln+1-i] then return(false); fi;
od:
return(true);
end proc;
# find min pal >= n and with n in base-b shadow, write in base 10
over10:=proc(n) global b;
local t1, t2, i, m, sw1, L1;
t1:=convert(n, base, b);
L1:=nops(t1);
for m from n to 10*n do
if ispal(m) then
t2:=convert(m, base, b);
sw1:=1;
for i from 1 to L1 do
if t1[i] > t2[i] then sw1:=-1; break; fi;
od:
if sw1=1 then return(m); fi;
fi;
od;
lprint("no solution in over10 for n = ", n);
end proc;
# find min pal >= n and with n in base-b shadow, write in base 10
overb:=proc(n) global b;
local t1, t2, i, m, mb, sw1, L1;
t1:=convert(n, base, b);
L1:=nops(t1);
for m from n to 10*n do
if ispal(m) then
t2:=convert(m, base, b);
sw1:=1;
for i from 1 to L1 do
if t1[i] > t2[i] then sw1:=-1; break; fi;
od:
if sw1=1 then mb:=add(t2[i]*10^(i-1), i=1..nops(t2)); return(mb); fi;
fi;
od;
lprint("no solution in over10 for n = ", n);
end proc;
b:=2;
[seq(over10(n), n=0..144)]; # A175298
[seq(overb(n), n=0..144)]; # A265543
MATHEMATICA
sb2p[n_]:=Module[{m=n}, While[!PalindromeQ[IntegerDigits[m, 2]]|| Min[ IntegerDigits[ m, 2]-IntegerDigits[n, 2]]<0, m++]; FromDigits[ IntegerDigits[ m, 2]]]; Array[sb2p, 50, 0] (* Requires Mathematica version 10 or later *) (* Harvey P. Dale, Oct 15 2017 *)
CROSSREFS
KEYWORD
nonn,base
AUTHOR
N. J. A. Sloane, Dec 09 2015
STATUS
approved