OFFSET
1,6
COMMENTS
If a binary number is palindromic, it is also strobogrammatic. In bases 3 through 7, this is not true, where only digits 0 and 1 can be used, because 8 is not a digit, nor are either of the inversion paid (6,9). I do not show bases beyond 10, although admittedly some letters as digits are other letters upside-down.
EXAMPLE
A[2,4] = 5 because 4th strobogrammatic number base 2 = 101 = 5 (base 10). A[9,8] = 154 because 8th strobogrammatic number base 9 = 181 = 154 (base 10). The array begins: ===================================================================================
..n.|.1.|.2.|.3.|..4.|..5.|...6.|...7.|....8.|....9.|...10.|...11.|....12.|
===================================================================================
k=1.|.0.|.1.|.2.|..3.|..4.|...5.|...6.|....7.|....8.|....9.|...10.|....11.|
k=2.|.0.|.1.|.3.|..5.|..7.|...9.|..15.|...17.|...21.|...27.|...31.|....33.|A006995
k=3.|.0.|.1.|.4.|.10.|.13.|..28.|..40.|...82.|...91.|..112.|..121.|...244.|
k=4.|.0.|.1.|.5.|.17.|.21.|..65.|..85.|..257.|..273.|..325.|..341.|..1025.|
k=5.|.0.|.1.|.6.|.26.|.31.|.126.|.156.|..626.|..651.|..756.|..781.|..3126.|
k=6.|.0.|.1.|.7.|.37.|.43.|.217.|.259.|.1297.|.1333.|.1519.|.1555.|..7777.|
k=7.|.0.|.1.|.8.|.50.|.57.|.344.|.400.|.2402.|.2451.|.2752.|.2801.|.16808.|
k=8.|.0.|.1.|.9.|.65.|.73.|.513.|.585.|.4097.|.4161.|.4617.|.4681.|.32769.|
k=9.|.0.|.1.|.8.|.10.|.80.|..82.|..91.|..154.|..656.|..665.|..728.|...730.|
k=10|.0.|.1.|.8.|.11.|.69.|..88.|..96.|..101.|..111.|..181.|..609.|...619.|A000787
===================================================================================
MAPLE
strobo := proc(b, n)
option remember;
local a;
if n <=2 then
return n-1 ;
elif b = 1 then
return n-1 ;
else
for a from procname(b, n-1)+1 do
isstrobo := true ;
dgsa := convert(a, base, b) ;
for d from 1 to nops(dgsa) do
if op(d, dgsa)=1 and op(-d, dgsa) <> 1 then
isstrobo := false;
elif op(d, dgsa)=8 and op(-d, dgsa) <> 8 then
isstrobo := false;
elif op(d, dgsa)=6 and op(-d, dgsa) <> 9 then
isstrobo := false;
elif op(d, dgsa)=9 and op(-d, dgsa) <> 6 then
isstrobo := false;
elif op(d, dgsa)=0 and op(-d, dgsa) <> 0 then
isstrobo := false;
elif op(d, dgsa) in { 2, 3, 4, 5, 7} then
isstrobo := false;
end if;
end do;
if isstrobo then
return a;
end if;
end do:
end if;
end proc: # R. J. Mathar, Sep 30 2011
CROSSREFS
KEYWORD
AUTHOR
Jonathan Vos Post, Jan 24 2009
STATUS
approved