cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A111156 Numbers that look the same when printed upside down.

Original entry on oeis.org

0, 8, 69, 88, 96, 609, 689, 808, 888, 906, 986, 6009, 6699, 6889, 6969, 8008, 8698, 8888, 8968, 9006, 9696, 9886, 9966, 60009, 60809, 66099, 66899, 68089, 68889, 69069, 69869, 80008, 80808, 86098, 86898, 88088, 88888, 89068, 89868, 90006, 90806, 96096, 96896, 98086, 98886, 99066, 99866, 600009
Offset: 1

Views

Author

Paul Stoeber (pstoeber(AT)uni-potsdam.de), Oct 09 2005

Keywords

Comments

Numbers with 1's are excluded.
Numbers written with digits 0,6,8,9, with 6 and 9 interchanged when reversed. - Robert Israel, Jul 02 2018

Crossrefs

Cf. strobogrammatic numbers A000787. If 8's are excluded we get A111065.

Programs

  • Haskell
    main=print$"0":concat[concat[[reverse(reverse(map f x)++z++x)|x<-y]|z<-["","0"]]|y<-s(iterate i"6")];f '0'='0';f '6'='9';f '8'='8';f '9'='6';i('0':x)='6':x;i('6':x)='8':x;i('8':x)='9':x;i('9':x)='0':i x;i""="6";s(x:y@(z:_))=let w:v=s y in if length x==length z then(x:w):v else[x]:w:v
    
  • Maple
    f:= proc(n) local L,Lp,nl;
       L:= subs(1=6,2=8,3=9,convert(n,base,4));
       nl:= nops(L);
       Lp:= subs([6=9,9=6],L);
       add(Lp[-i]*10^(i-1),i=1..nl)+add(L[i]*10^(nl+i-1),i=1..nl);
    end proc:
    g:= proc(n) local L,Lp,nl;
       L:= subs(1=6,2=8,3=9,convert(n,base,4));
       nl:= nops(L);
       Lp:= subs([6=9,9=6],L);
       seq(add(Lp[-i]*10^(i-1),i=1..nl)+x*10^nl+add(L[i]*10^(nl+i),i=1..nl),x=[0,8]);
    end proc:
    0,8,seq(op([seq(f(n),n=4^i..4^(i+1)-1),seq(g(n),n=4^i..4^(i+1)-1)]),i=0..2); # Robert Israel, Jul 02 2018
  • Mathematica
    Select[Range[0,600010],ContainsOnly[IntegerDigits[#],{0,6,8,9}]&&IntegerReverse[FromDigits[IntegerDigits[#]/.{6->9,9->6}]]==#&] (* James C. McMahon, Apr 30 2024 *)
  • Python
    from itertools import count, islice, product
    def ud(s): return s[::-1].translate({ord('6'):ord('9'), ord('9'):ord('6')})
    def agen():
        yield from [0, 8]
        for d in count(2):
            for start in "689":
                for rest in product("0689", repeat=d//2-1):
                    left = start + "".join(rest)
                    right = ud(left)
                    for mid in [[""], ["0", "8"]][d%2]:
                        yield int(left + mid + right)
    print(list(islice(agen(), 48))) # Michael S. Branicky, Mar 29 2022

Extensions

Corrected by Robert Israel, Jul 02 2018